五、主主同步复制设置
服务器A:192.168.1.100
服务器B:192.168.1.60
同步数据库名: test
- 1. 创建同步账户;
服务器A:
grant replication slave on *.* to 'replication'@'192.168.1.60' identified by '111111'; flush privileges;
服务器B:
grant replication slave on *.* to 'replication'@'192.168.1.100' identified by '111111'; flush privileges;
- 2. 设置服务器配置;
服务器A:
server-id = 1 log-bin = mysql-binlog binlog-do-db = test binlog-ignore-db= mysql,information_schema max_binlog_size = 500M binlog_format = mixed
#主主需加入的部分
log-slave-updates auto_increment_offset = 1 auto_increment_increment = 2 sync_binlog = 2 relay-log=smmsrv-relay-bin replicate-do-db = test replicate-ignore-db = mysql,information_schema
服务器B:
server-id = 2 log-bin=mysql-bin.log replicate-do-db=test replicate-ignore-db=mysql,information_schema
#主主需加入的部分
binlog-ignore-db=mysql binlog-do-db=test binlog_format=mixed expire_logs_day=3 max_binlog_size=500M auto_increment_offset = 2 auto_increment_increment = 2 log-slave-updates sync_binlog = 2 relay-log=localhost-relay-bin
配置完成后,重新启动A,B两台数据库服务器上的mysql
service mysqld restart
- 3. 为了设置同步,首先测试一下创建的账户是否可以登录到设定的服务器上
服务器A:
shell>mysql –ureplication –h ‘192.168.1.60’ –p
服务器B:
shell>mysql –ureplication –h ‘192.168.1.100’ –p
登录排错:
如果登录不上,先看看用户名,密码,主机IP或主机名是否有问题,要是再不对,看看报错,一般的错误可能是需要设置防火墙允许3306端口
vi /etc/sysconfig/iptables
添加-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT,然后重启iptables
(注意添加在-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited之前,否则可能导致规则不生效)
Mysql无法远程连接的常见问题:
1)查看Mysql的端口是否正确,通过netstat -ntlp查看端口占用情况,一般情况下端口是3306。
2)报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ’192.168.51.112′ (111)
查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
3)报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ’192.168.51.112′ (113)
查看是否iptables没有允许mysql连接,通过:service iptables stop临时关闭测试是否可以正常远程访问,如果可以,按上面方面设置iptable允许3306端口
4)远程访问mysql速度很慢的解决方法
修改/etc/my.cnf或my.ini
[mysqld]下添加
skip-name-resolve
skip-grant-tables
- 4. 首先设置主从同步;
服务器A:(前提是服务器A上已经有数据,服务器B上没有数据)
mysql>flush tables with read lock; mysql>show master statusG *************************** 1. row *************************** File: binlog.000006 Position: 107 Binlog_Do_DB: test Binlog_Ignore_DB: mysql,information_schema 1 row in set (0.00 sec)
mysqldump备份服务器A上的数据,数据库test,然后拷贝到服务器A上,一旦拷贝好,记得解锁服务器A上的锁定,如下:
mysql>unlock tables;
服务器B:
拷贝好服务器A上的数据之后,登录mysql,首先创建数据库,此时需要和服务器A上的数据库完全一致,可以使用show create database smm_vbb来显示创建的语句,用source命令导入数据
登录mysql;
mysql> stop slave; mysql>change master to master_host='192.168.1.60', master_user='replication', master_password=‘111111', master_log_file='binlog.000006', master_log_pos=107; mysql>start slave; mysql>show slave status; Slave_IO_Running: Yes Slave_SQL_Running: Yes
- 5. 主主同步;
服务器A:
锁定服务器A,不要在写入数据;
等段时间,登录服务器B。
服务器B:
mysql>flush tables with read lock; mysql>show master statusG *************************** 1. row *************************** File: binlog.000005 Position: 256 Binlog_Do_DB: test Binlog_Ignore_DB: mysql,information_schema 1 row in set (0.00 sec)
服务器A:
mysql>unlock tables; mysql> stop slave; mysql>change master to master_host='192.168.1.100', master_user='replication', master_password=‘111111', master_log_file='binlog.000005', master_log_pos=256;mysql>start slave; mysql>show slave status; Slave_IO_Running: Yes Slave_SQL_Running: Yes
此时不要忘了,解锁服务器B上的锁定:
服务器B:
mysql>unlock tables;
好的,成功了
参考文档:
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
http://dev.mysql.com/doc/refman/5.1/zh/replication.html
http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#user-resources
http://www.mike.org.cn/articles/mysql-master-slave-sync-conf-detail/
http://www.hackbase.com/tech/2011-06-30/64326.html
http://hi.baidu.com/%D6%AA%C8%FD%CB%C4%C0%C9/blog/item/141854aa50a20fdf7cd92aa3.html
来看看博主最近更新了哪些内容!!