配置从库
- 创建同步用户(为主从切换做准备)。
- 登录从库。
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
select user,host from mysql.user;
- 退出从库。
1
exit
- 登录从库。
- 修改从库的配置文件。
场景一:整库复制。
- 修改从库1的配置文件。
- 打开“/etc/my.cnf”文件。
1
vim /etc/my.cnf
- 按“i”进入编辑模式,在[mysqld]下添加如下内容,参数server-id、log-bin和relay_log的含义参见表1。
[mysqld] server-id=2 log-bin=/data/mysql/data/mysql-bin relay_log=/data/mysql/relaylog/relay-bin
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“/etc/my.cnf”文件。
- 修改从库2的配置文件。
- 打开“/etc/my.cnf”文件。
1
vim /etc/my.cnf
- 按“i”进入编辑模式,在[mysqld]下添加如下内容,参数server-id、log-bin和relay_log的含义参见表1。
[mysqld] server-id=3 log-bin=/data/mysql/data/mysql-bin relay_log=/data/mysql/relaylog/relay-bin
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“/etc/my.cnf”文件。
场景二:部分复制。
例如同步test库,不同步mysql库、information_schema库和performance_schema库。
- 修改从库1的配置文件。
- 打开“/etc/my.cnf”文件。
1
vim /etc/my.cnf
- 按“i”进入编辑模式,在[mysqld]下添加如下内容,参数server-id、log-bin和relay_log的含义参见表1。
[mysqld] server-id=2 log-bin=/data/mysql/data/mysql-bin relay_log=/data/mysql/relaylog/relay-bin replicate-do-db=test replicate-ignore-db=mysql,information_schema,performance_schema
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“/etc/my.cnf”文件。
- 修改从库2的配置文件。
- 打开“/etc/my.cnf”文件。
1
vim /etc/my.cnf
- 按“i”进入编辑模式,在[mysqld]下添加如下内容,参数server-id、log-bin和relay_log的含义参见表1。
[mysqld] server-id=3 log-bin=/data/mysql/data/mysql-bin relay_log=/data/mysql/relaylog/relay-bin replicate-do-db=test replicate-ignore-db=mysql,information_schema,performance_schema
- 在不考虑主从切换的情况下,主库的配置文件中添加log-bin参数,从库的配置文件中添加relay_log参数。
- 在考虑主从切换的情况下,主库的配置文件中添加log-bin和relay_log参数,从库的配置文件中添加log-bin和relay_log参数。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“/etc/my.cnf”文件。
- 修改从库1的配置文件。
- 重启MySQL服务。
- 重启MySQL服务。
1
service mysql restart
或者
1 2
/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%';
- 传统方式配置如下,主库与从库配置保持一致:
- 登录从库。
- 建立主从关系(根据4的同步方式选择)。
- 传统方式配置如下,需要指定binlog文件和位置:
1
change master to master_host='192.168.220.58',master_port=3306,master_user='replicate',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=155;
- GTID方式配置如下:
1
change master to master_host='192.168.220.58',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1;
第一次部署主从复制的时候需要执行change master命令指定主库以及同步方式,以后在不改变主库首位的情况下不用执行change master命令。
- 传统方式配置如下,需要指定binlog文件和位置:
- 启动从库。
1
start slave;
停止从库命令:
stop slave;
- 查看从库状态。
- 执行以下命令。
1
show slave status\G;
下面两项值均为Yes,表示从库启动成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果Last_IO_Error报错“The slave I/O thread stops because master and slave have equal MySQL server UUIDs......”,参考查看MySQL主从复制状态时提示The slave IO thread stops的解决方法解决后,重新查看从库状态。
- 退出从库。
1
exit
- 执行以下命令。
- 登录主库查看从库信息。
1 2
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock show slave hosts;
父主题: 异步复制