配置主库
- 创建同步用户。
- 登录主库。
1
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock
- 为从库建立一个连接账号(用户名是replicate,密码是123456),为该连接账号授予replication slave权限,刷新权限。
1 2 3
create user 'replicate'@'%' identified by '123456'; grant replication slave on *.* to 'replicate'@'%'; flush privileges;
或者
1 2 3
create user 'replicate'@'192.168.220.58' identified by '123456'; grant replication slave on *.* to 'replicate'@'192.168.220.58'; flush privileges;
- 查看用户。
1
select user,host from mysql.user;
- 退出主库。
1
exit
- 在从库上用replicate账号访问主库(-h和-P后面分别为主库的IP地址和端口,根据实际情况填写)。
1
/usr/local/mysql/bin/mysql -h192.168.220.58 -P3306 -ureplicate -p123456 -S /data/mysql/run/mysql.sock
- 登录主库。
- 修改主库的配置文件。
- 打开/etc/my.cnf文件。
1
vim /etc/my.cnf
- 按“i”进入编辑模式,在[mysqld]下添加如下内容。
[mysqld] server-id=1 log-bin=/data/mysql/data/mysql-bin relay_log=/data/mysql/relaylog/relay-bin
表1 配置参数 参数项
说明
备注
server-id
设置服务器唯一ID。
默认值是1,用户可以自定义,需要保证主从复制部署中每个数据库的server-id唯一,例如:主库的server-id=1,从库1的server-id=2,从库2的server-id=3。
log-bin
开启binlog,设置binlog的目录和名字。
默认值是mysql-bin,用户可以自定义,例如:log-bin=/data/mysql/data/mysql-bin
执行show variables like 'log_bin';和show variables like 'log_bin_basename';查看binlog。
relay_log
开启relay_log,设置relay_log的目录和名字。
默认值是空(非NULL),用户可以自定义,例如:relay_log=/data/mysql/relaylog/relay-bin
执行show variables like 'relay_log';和show variables like 'relay_log_basename';查看relay log。
- 在不考虑主从切换的情况下,主库的配置文件中添加log-bin参数,从库的配置文件中添加relay_log参数。
- 在考虑主从切换的情况下,主库的配置文件中添加log-bin和relay_log参数,从库的配置文件中添加log-bin和relay_log参数。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开/etc/my.cnf文件。
- 重启MySQL服务。
- 重启MySQL服务。
1
service mysql restart
或者
/usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
- 查看数据库进程和端口号。
1 2
ps -ef | grep mysql netstat -anpt | grep mysql
- 重启MySQL服务。
- 配置同步方式。
- 登录主库。
1
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock
- 配置同步。
同步方式有两种方式:传统方式和GTID方式。MySQL版本在5.7及以上时推荐使用GTID方式。
- 传统方式配置如下,主库与从库配置保持一致:
1 2 3 4 5
set global enforce_gtid_consistency='off'; set global gtid_mode='on_permissive'; set global gtid_mode='off_permissive'; set global gtid_mode='off'; show variables like '%gtid_mode%';
- GTID方式配置如下,主库与从库配置保持一致:
1 2 3 4 5
set global enforce_gtid_consistency='on'; set global gtid_mode='off_permissive'; set global gtid_mode='on_permissive'; set global gtid_mode='on'; show variables like '%gtid_mode%';
- 传统方式配置如下,主库与从库配置保持一致:
gtid_mode设置顺序:
gtid_mode的值只能相邻状态转换修改。例如:从OFF到ON,只能从OFF修改为OFF_PERMISSIVE,然后从OFF_PERMISSIVE修改为ON_PERMISSIVE,再从ON_PERMISSIVE修改为ON;反之亦然,即OFF <->OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON。
- 登录主库。
- 查看主库状态。
- 登录主库。
1
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock
- 查看主库状态。
1
show master status;
File列和Position列都有值则说明正常。记录File参数值(binlog日志文件)和Position参数值(binlog中最新操作的位置),后面“建立主从关系”配置从库(建立主从关系(根据前面部署的同步方式选择)。)时会用到这2个参数值。
- 退出主库。
1
exit
- 登录主库。