实战MYSQL 8.0.12 主主复制配置过程
搭建环境:
Server name | IP |
---|---|
mysql1 | 192.168.200.1 |
mysql2 | 192.168.200.2 |
服务器版本:CentOS Linux release 7.5.1804 (Core)
MYSQL版本:8.0.12 # 采用源码安装方式, 此过程略,或者参考 http://blog.51cto.com/snowlai/2140451
由于MYSQL采用的是源码安装方式,没有生成 /etc/my.cnf 文件,需要手动创建,创建内容如下:
vim /etc/my.cnf # mysql1里的内容,mysql2的内容区别是server-id = 2 就可以,其它一样;
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server-id = 1
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
symbolic-links=0
log-error=/usr/local/mysql/data/mysql1.err
pid-file=/usr/local/mysql/data/mysql1.pid
进入mysql1的数据库
mysql -uroot -p #输入数据库的密码
mysql> flush table with read lock;
锁住数据库的写操作后,不要退出这个终端,复制一个终端,将/usr/local/mysql/data 压缩打包,然后再scp到mysql2上。
tar zcvf data.tar.gz data
scp data.tar.gz [email protected]:/usr/local/mysql/
然后再mysql2上解压data.tar.gz, 并删除 auto.cnf文件
tar zxvf data.tar.gz
rm -rf auto.cnf
都重启mysqld服务
service mysqld restart
mysql1: MASTER ; mysql2:SLAVE
在mysql1上创建复制用户(repl_user),并授权
grant replication slave on . to ‘repl_user‘@‘mysql2‘ identified by ‘REPL_PASSWORD‘;
show master status;
并记录master的输出:File和Position的值
登录到mysql2上,设置mysql1为自己的主服务器
change master to master_host=‘mysql1‘,master_user=‘repl_user‘,master_password=‘REPL_PASSWORD‘,master_log_file=‘mysql1上File的值‘,master_log_pos=mysql1上的position值;
start slave;
show slave status \G;
mysql2: MASTER ; mysql1:SLAVE
在mysql2上创建复制用户(repl_user),并授权
grant replication slave on . to ‘repl_user‘@‘mysql1‘ identified by ‘REPL_PASSWORD‘;
show master status;
并记录master的输出:File和Position的值
登录到mysql1上,设置mysql2为自己的主服务器
change master to master_host=‘mysql2‘,master_user=‘repl_user‘,master_password=‘REPL_PASSWORD‘,master_log_file=‘mysql2上File的值‘,master_log_pos=mysql2上的position值;
start slave;
show slave status \G;
注意事项:
- 两个数据库的数据在初始状态必须保持一致, 这样才能保证 show master status;的时候输出的结果才一致;
- show slave status \G; 的时候。 Slave_IO_Running 和 Slave_SQL_Running 的结果为YES;
- 数据库的配置文件:/etc/my.cnf 中的server-id的值必须不一样;
- 两台服务器中的数据库版本必须一样;
原文地址:http://blog.51cto.com/snowlai/2298971