1
zeraba 2016-06-06 11:08:51 +08:00
贴下全程的配置方法啊,包括建立 REPLICAITON SLAVE 账号 主从数据库的配置参数
单看这个报错,只能靠猜了 |
2
hcymk2 2016-06-06 11:09:39 +08:00
你只同步一个数据库吧。 看下你的配置文件。
|
3
qcloud OP |
4
lytofb 2016-06-06 11:25:38 +08:00
我不是很懂 mysql 的数据库同步,双主同步不会发生脑裂么?
|
5
loading 2016-06-06 11:26:01 +08:00 via Android
提醒一下:别搞反了。
某公司这样丢过数据 |
7
notgod 2016-06-06 12:14:29 +08:00 2
上次就回你一次了 又来这逗比问题
你不要搜索一些古董资料 和中文资料 去 Google 找英文的 使用 search tool 日期选择 最近一个月 一年 中文资料大部分都扯 按非专业的中文资料操作 能玩到你吐血 有的一个教程 直接把 mysql3.x 改为 mysql 5.x 就直接发布了 其次: 主主同步 99.9%脑裂 不要说不可以 如果要不脑裂 必须加个中间件 再次: 数据库同步 初始数据 必须保持 2 边的 position 绝对一致 上次回你就已经有 https://v2ex.com/t/283670#reply2 语句包含 MASTER_LOG_POS=33421; 最后: 这些在 mysql 官方文档中 非常详细 而且文档的版本 会随着官方的更新而更新 这种配置一般查看官方文档是最快速最有效 因为你问别人 别人的系统类型 系统版本 都不一样 mysql 版本也不一样 产生的配置文件 性能 使用方式 都不一样 所以建议你打算做什么测试 学习什么 先官方文档过一遍 然后部署 遇到问题 搜索官方文档一遍 没有的话在官方论坛搜索一遍 就差不多了解决了 这里提问并不一定可以解决你的问题 个人意见 仅供参考 |
11
notgod 2016-06-06 13:33:20 +08:00
你没看我说的?
position 问题 position 问题 position 问题 position 问题 position 问题 再次: 数据库同步 初始数据 必须保持 2 边的 position 绝对一致 上次回你就已经有 https://v2ex.com/t/283670#reply2 语句包含 MASTER_LOG_POS=33421; |
13
BOYPT 2016-06-06 13:46:35 +08:00 1
建议直接上 galeracluster ,否则那些主复制都是不怎么靠谱的。
|
14
notgod 2016-06-06 13:52:41 +08:00 2
你就不要折腾这个了 直接使用集群
我直接给你资料好了 以前给客户部署的 任意节点都可以读写 有些可能有些过时了 参考资料 http://matthewcasperson.blogspot.jp/2013/07/setting-up-galera-cluster-in-centos-6.html http://blog.laimbock.com/2014/07/08/howto-setup-mariadb-galera-cluster-10-on-centos/comment-page-1/ https://mariadb.com/kb/en/mariadb/documentation/replication/galera/mariadb-galera-cluster-known-limitations/ https://mariadb.com/kb/en/mariadb/documentation/replication/galera/galera-cluster-system-variables/#wsrep_replicate_myisam http://tecadmin.net/setup-mariadb-galera-cluster-5-5-in-centos-rhel/ echo "HOSTNAME=dbnode1" >>/etc/sysconfig/network hostname "dbnode1" echo "HOSTNAME=dbnode2" >>/etc/sysconfig/network hostname "dbnode2" echo "NETWORKING_IPV6=yes">>/etc/sysconfig/network echo "nameserver 74.207.241.5 nameserver 74.207.242.5 nameserver 2600:3c01::2 nameserver 2600:3c01::3 options rotate">/etc/resolv.conf echo -n " 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 2600:3c01::f03c:91ff:fedf:9b24/64 db1 ">/etc/hosts #IP 分配 DB Node 1 173.255.199.172 / 192.168.183.172 DB Node 2 198.58.114.176 / 192.168.185.74 echo "[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1">/etc/yum.repos.d/MariaDB.repo yum -y install epel-release yum -y install socat yum erase *mysql* yum -y install MariaDB-Galera-server MariaDB-client galera /etc/init.d/mysql start mysql_secure_installation #mysql_upgrade mysql -u root -pAa1111111111111 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Aa11111111' WITH GRANT OPTION; FLUSH PRIVILEGES; exit service mysql stop #### Testing mysql -u root -pA111111111 # Check Status show status like 'wsrep%'; #DB1 CREATE DATABASE clustertest; CREATE TABLE clustertest.mycluster ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), ipaddress VARCHAR(20), PRIMARY KEY(id)); INSERT INTO clustertest.mycluster (name, ipaddress) VALUES ("db1", "10.0.0.9"); SELECT * FROM clustertest.mycluster; #DB2 SELECT * FROM clustertest.mycluster; INSERT INTO clustertest.mycluster (name, ipaddress) VALUES ("db2", "10.0.0.10"); show databases; MYSQL 数据库 DMM 架构设计 使用 MariaDB 作为数据库引擎 表使用 InnoDB storage engine. 可能有部分功能性缺陷 可以参考 https://mariadb.com/kb/en/mariadb/documentation/replication/galera/mariadb-galera-cluster-known-limitations/ 因为按你们的需求 只能使用多主的架构 这样可以降低数据库并发的压力 提高写入效率 如果性能下降 增加数据库节点即可 所有数据全部都会自动同步 不需要人工干预 使用方式: 当前 2 节点可用 准备一个域名 将域名 DNS 改为 www.dnspod.com 国际站 非国内站 增加解析记录 (假如 test.com 是你的域名) CNAME 记录 一条 sqlcloud.test.com CNAME 记录 node.test.com A 记录 (IPv4 协议) node A 记录 default 173.255.199.172 node A 记录 default 198.58.114.176 AAAA 记录 (IPv6 协议) node AAAA default 2600:3c00::f03c:91ff:fe89:e46 node AAAA default 2600:3c00::f03c:91ff:fe89:ea9 TTL 设置为 300 或 600 default 是 GEO 分流 可以设置一个大洲或者一个国家每服务器 使用 DNSPOD 国际版 是因为这个支持多记录轮询模式 例如如果有 1000 个 DNS 请求 DNSPOD 会使用 RR 模式 轮流返回可用 IP 就是每个 IP 分配 500 个请求,这样实现多数据库服务器写入 提高性能 然后链接语句 使用 sqlcloud.test.com:3306 会随机分配 IP root 1111111111 数据库名称 读写数据 都会自动同步在多个节点中 这个平台可测试可以商用 插入 10 万条数据 无脑裂问题 如果有出现 可以增加仲载节点解决 PS. 已修正 MYSQL 用户表,MYISAM 无法自动同步问题 C7 文档 2 systemctl status firewalld hostnamectl set-hostname cmsqlnode2 --static wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_address=gcomm://其他集群 IP wsrep_cluster_name='cluster1' wsrep_node_address='本机 IP' wsrep_node_name='db1' ip addr show vi /etc/my.cnf.d/server.cnf cat /etc/my.cnf.d/server.cnf node1 Server Login: IP Address: 1111111111 Username: root Password: 11111111111111 node2 IP Address: 11111111111 Username: root Password: 111111111111 cat >>/etc/sysconfig/network-scripts/ifcfg-eth1 <<EOF IPADDR=10.40.211.2 NETMASK=255.255.255.0 EOF service network restart yum erase *mysql* yum -y install epel-release yum -y install socat echo "[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1">/etc/yum.repos.d/MariaDB.repo echo "[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1">/etc/yum.repos.d/MariaDB.repo yum -y install net-tools MariaDB-Galera-server MariaDB-client galera /etc/init.d/mysql start /etc/init.d/mysql restart mysql_secure_installation #mysql_upgrade mysql -u root -pAa111111111111111 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Aa11111111111111' WITH GRANT OPTION; FLUSH PRIVILEGES; exit service mysql stop #### Testing mysql -u root -pAa111111111111 #### Check Status show status like 'wsrep%'; ######节点测试 #DB1 CREATE DATABASE clustertest; CREATE TABLE clustertest.mycluster ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), ipaddress VARCHAR(20), PRIMARY KEY(id)); INSERT INTO clustertest.mycluster (name, ipaddress) VALUES ("db1", "10.0.0.9"); SELECT * FROM clustertest.mycluster; #DB2 SELECT * FROM clustertest.mycluster; INSERT INTO clustertest.mycluster (name, ipaddress) VALUES ("db2", "10.0.0.10"); show databases; 配置文件 多个 #IP 分配 DB Node 1 173.255.199.172 / 192.168.183.172 DB Node 2 198.58.114.176 / 192.168.185.74 DB1 ============================ vi /etc/my.cnf.d/server.cnf [mysqld] wsrep_replicate_myisam=1 query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.185.74 wsrep_cluster_name='cluster1' wsrep_node_address='192.168.183.172' wsrep_node_name='db1' wsrep_sst_method=rsync wsrep_sst_auth=root:Aa258369 innodb_doublewrite=1 innodb_flush_log_at_trx_commit=2 /etc/init.d/mysql bootstrap DB2 ============================ vi /etc/my.cnf.d/server.cnf wsrep_cluster_address=gcomm://192.168.183.172 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_replicate_myisam=1 wsrep_sst_method=rsync wsrep_sst_auth=root:Aa258369 wsrep_cluster_name='cluster1' wsrep_node_address='192.168.185.74' wsrep_node_name='db2' wsrep_slave_threads=4 query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 innodb_doublewrite=1 innodb_flush_log_at_trx_commit=2 /etc/init.d/mysql bootstrap /etc/init.d/mysql restart 主 cat >/etc/my.cnf.d/server.cnf <<EOF [mysqld] binlog_format=ROW default_storage_engine=innodb wsrep_replicate_myisam=1 innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 innodb_doublewrite=1 innodb_flush_log_at_trx_commit=2 query_cache_size=0 query_cache_type=0 #bind-address=0.0.0.0 [galera] ## WSREP options wsrep_provider=/usr/lib64/galera/libgalera_smm.so #wsrep_provider_options= wsrep_cluster_name='cluster1' wsrep_cluster_address=gcomm://10.40.211.2 ##主节点 IP wsrep_node_name='db1' wsrep_node_address='10.40.211.2' #wsrep_node_incoming_address= wsrep_slave_threads=1 wsrep_max_ws_rows=131072 wsrep_max_ws_size=1073741824 wsrep_debug=0 wsrep_convert_LOCK_to_trx=0 wsrep_retry_autocommit=1 wsrep_auto_increment_control=1 wsrep_drupal_282555_workaround=0 wsrep_causal_reads=0 wsrep_sst_method=rsync wsrep_sst_auth=root:Aa258369 EOF 从 cat >/etc/my.cnf.d/server.cnf <<EOF [mysqld] binlog_format=ROW default_storage_engine=innodb wsrep_replicate_myisam=1 innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 innodb_doublewrite=1 innodb_flush_log_at_trx_commit=2 query_cache_size=0 query_cache_type=0 #bind-address=0.0.0.0 [galera] ## WSREP options wsrep_provider=/usr/lib64/galera/libgalera_smm.so #wsrep_provider_options= wsrep_cluster_name='cluster1' wsrep_cluster_address=gcomm://10.40.211.2 ##主节点 IP wsrep_node_name='db2' wsrep_node_address='10.40.211.1' #wsrep_node_incoming_address= wsrep_slave_threads=1 wsrep_max_ws_rows=131072 wsrep_max_ws_size=1073741824 wsrep_debug=0 wsrep_convert_LOCK_to_trx=0 wsrep_retry_autocommit=1 wsrep_auto_increment_control=1 wsrep_drupal_282555_workaround=0 wsrep_causal_reads=0 wsrep_sst_method=rsync wsrep_sst_auth=root:Aa258369 EOF Test SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema; SELECT table_name AS "Tables", round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB" FROM information_schema.TABLES WHERE table_schema = "$DB_NAME" ORDER BY (data_length + index_length) DESC; SELECT TABLE_NAME AS "Table Name", table_rows AS "Quant of Rows", ROUND( ( data_length + index_length ) /1024, 2 ) AS "Total Size Kb" FROM information_schema.TABLES WHERE information_schema.TABLES.table_schema = 'YOUR SCHEMA NAME/DATABASE NAME HERE' LIMIT 0 , 30 SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema ; MYSQL 建表 create database amarokdb; grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd'; grant all privileges on amarokdb.* to amarokuser@localhost ; 建立用户 分配权限 CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'; FLUSH PRIVILEGES; 删除用户 DROP USER ‘ demo ’@‘ localhost ’; |
15
qcloud OP @notgod 我也不想搞那,方便留个联系方式吗,我给你两台 windows 机器帮我配置一下吧,其他的都好说,拜托了,我折腾两天了,唉
|
16
notgod 2016-06-06 13:55:06 +08:00
这个那时候拿 Linode 的机器 部署测试的
测试无问题 你自己理下 我 5 个文档贴出来的 有些乱 |
23
fuxiaopang 2016-06-06 22:48:00 +08:00 via iPhone 1
把主从机器的 binlog 都清空,然后把主的数据库 dump 出来,然后清空从数据库,重新用主数据库的备份恢复,之后再开始从数据库的同步。
|