本文绝大部分内容都是转自别人的
转自:http://blog.51cto.com/jiangjianlong/1981994
一、测试环境
操作系统版本:Red Hat Enterprise Linux Server release 6.5 (Santiago)(我的系统是centos7)
Mysql版本:MySQL-5.6.38-1.el6.x86_64.rpm-bundle.tar(我的是5.6.37)
node01:192.168.10.71
node02:192.168.10.72
VIP:192.168.10.70
二、配置node01为主、node02为从的主从同步
1、node01和node02分别安装好Mysql 5.6.38,安装方法请参考上一篇博文《MySQL 5.6.38在RedHat 6.5上通过RPM包安装》。
2、在node01和node02分别编辑/etc/my.cnf,配置如下:
[mysqld]
log-bin=mysql-bin
server-id = 1
[mysqld_safe]
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
replicate-do-db = all
3、重启mysql服务
[root@node01 ~]# service mysql restart
[root@node02 ~]# service mysql restart
4、登录node01的mysql,创建用于同步的账户repl,密码为123456,并查询master状态,记下file名称和posttion数值
mysql> GRANT REPLICATION SLAVE ON *.* to 'repl'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
先在从服务器中访问主服务器的数据库,mysql -u用户名 -h ip -p 密码,如果访问成功,则继续,否则要寻找不能访问的原因,可能是防火墙给挡住了。
mysql> show master status;
5、登录node02的mysql,执行以下语句开启从服务器,注意master_host要填写node01的IP
mysql> change master to master_host='192.168.10.71',master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=318;
Query OK, 0 rows affected, 2 warnings (0.36 sec)
1
2
3
4
5
6
7
|
命令参数解释:
master_host='192.168.10.71' ## Master 的 IP 地址
master_user='repl' ## 用于同步数据的用户(在 Master中授权的用户)
master_password='123456' ## 同步数据用户的密码
master_log_file='mysql-bin.000001' ##指定 Slave 从哪个日志文
件开始读复制数据(可在 Master 上使用 show master status 查看到日志文件名)
master_log_pos=429 ## 从哪个 POSITION 号开始读
|
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
6、查询从服务的状态,状态正常
7、在node01创建一个数据库、一个表并插入一行数据,用于测试node02是否能同步过去
mysql> create database mysql_long;
Query OK, 1 row affected (0.00 sec)
mysql> use mysql_long;
Database changed
mysql> create table test(id int(3),name char(5));
Query OK, 0 rows affected (0.13 sec)
mysql> insert into test values (001,'jlong');
Query OK, 1 row affected (0.01 sec)
8、登录到node02的Mysql,同步正常
三、配置node02为主、node01为从的主从同步
1、登录node02的mysql,创建用于同步的账户repl,密码为123456,并查询master状态,记下file名称和posttion数值,并查询master状态
mysql> GRANT REPLICATION SLAVE ON *.* to 'repl'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.10 sec)
2、登录node01的mysql,执行以下语句开启从服务器,注意这里master_host要填写node02的IP
mysql> change master to master_host='192.168.10.72',master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=318;
Query OK, 0 rows affected, 2 warnings (0.36 sec)
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
3、查询从服务的状态,状态正常
4、在node02创建一个数据库、一个表并插入一行数据,用于测试node01是否能同步过去
mysql> create database mysql_long2;
Query OK, 1 row affected (0.00 sec)
mysql> use mysql_long2;
Database changed
mysql> create table test2(id int(3),name char(10));
Query OK, 0 rows affected (0.71 sec)
mysql> insert into test2 values (001,'jianlong');
Query OK, 1 row affected (0.00 sec
5、node01同步正常。
这样互为主从就配置好了,两台机既是对方的Master,又是对方的Slave,无论在哪一台机上数据发生了变化,另一台都能及时进行同步数据,