just do it

关于mysql主从复制(单向、双向、环状)

搭建mysql的master-slave环境  单向
1)分别在host1(192.168.1.111)和host2(192.168.1.112)上安装mysql(本次测试版本为5.0.45),具体安装方法可见官方文档

2)配置master
首先编辑/etc/my.cnf,添加以下配置:

log-bin=mysql-bin #slave会基于此log-bin来做replication

server-id=1 #master的标识

#binlog-do-db = test #用于master-slave的具体数据库 不设置此选项则 所有数据库同步

然后添加专门用于replication的用户:

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@192.168.1.112 IDENTIFIED BY ‘root_m’;

此处 用户 root_m mysql账号需要存在 且%权限

重启mysql,使得配置生效:

/etc/init.d/mysqld restart

netstat -natup
kill pid
bin/mysqld_safe –user=mysql & 启动mysql服务

最后查看master状态:

mysql> show master status
-> ;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000005 | 98 | | |
+——————+———-+————–+——————+

3)配置slave
首先编辑/etc/my.cnf,添加以下配置:
server-id=2 #slave的标示
配置生效后,配置与master的连接:
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.1.111′,
-> MASTER_USER=’root_m’,
-> MASTER_PASSWORD=’root_m’,
-> MASTER_LOG_FILE=’mysql-bin.000005′,
-> MASTER_LOG_POS=98;
其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息
最后启动slave:
mysql> start slave;

——————————
master-slave环境 双向  (在单向主从基础上)

1)在 slave 服务器上配置 master 服务
首先编辑/etc/my.cnf,添加以下配置:

log-bin=mysql-bin #slave会基于此log-bin来做replication

server-id=2 #master的标示

#binlog-do-db = test #用于master-slave的具体数据库 不设置此选项则 所有数据库同步

然后添加专门用于replication的用户:

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@192.168.1.111 IDENTIFIED BY ‘root_m’;

此处 用户 root_m mysql账号需要存在 且%权限

重启mysql,使得配置生效:

/etc/init.d/mysqld restart

netstat -natup
kill pid
bin/mysqld_safe –user=mysql & 启动mysql服务

最后查看master状态:

mysql> show master status
-> ;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000003 | 98 | | |
+——————+———-+————–+——————+

2)配置slave 在192.168.1.111
首先编辑/etc/my.cnf,添加以下配置:

配置生效后,配置与master的连接:
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.1.112′,
-> MASTER_USER=’root_m’,
-> MASTER_PASSWORD=’root_m’,
-> MASTER_LOG_FILE=’mysql-bin.000003′,
-> MASTER_LOG_POS=98;

最后启动slave:
mysql> start slave;

——————————

master-slave环境 环状 

前提:需要三台或三台以上数据库服务器。都安装了相同版本的mysql.

现在已有三台数据库服务器为例:A(192.168.1.111)、B(192.168.1.112)、C(192.168.1.113)

《关于mysql主从复制(单向、双向、环状)》

 

说明: A是B的主服务器,B是C的主服务器,C是A的主服务器。 这样就组成了一个环状结构。

目的:是要实现在ABC三台任意一台数据服务器上执行数据操作,其它任意两台都要同步实现相同的操作。

1.)配置三台mysql服务器开启相关配置(修改my.cnf)

a. 3台数据库服务器都需要添加log-slave-updates = on

b. server-id = 1[2/3] 这项配置时id号不能相同

c. log-bin=mysql-bin 必须开启

d.binlog-do-db = test 用于master-slave的具体数据库 不设置此选项则 所有数据库同步

修改完成后重启mysql。

2.)在每台数据库服务器上为slave创建一个用户并授予复制的权限

a.A->B主从

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@192.168.1.112 IDENTIFIED BY ‘root_m’;

此处 用户 root_m mysql账号需要存在 且%权限

重启mysql,使得配置生效:

/etc/init.d/mysqld restart

netstat -natup
kill pid
bin/mysqld_safe –user=mysql & 启动mysql服务

最后查看master状态:

锁表:FLUSH TABLES WITH READ LOCK;

mysql> show master status
-> ;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000005 | 98 | | |
+——————+———-+————–+——————+

解锁:UNLOCK TABLES;

配置与master的连接:
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.1.111′,
-> MASTER_USER=’root_m’,
-> MASTER_PASSWORD=’root_m’,
-> MASTER_LOG_FILE=’mysql-bin.000005′,
-> MASTER_LOG_POS=98;
其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息
最后启动slave:
mysql> start slave;

b.B->C主从 参照a操作即可

c.C->A主从 参照a即可

注:

show slave status\G; 命令查看配置是否成功

当你看到

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

都为Yes的时候恭喜您配置成功了。

 

点赞