环境
CentOS 8
MariaDB 10.3.17
主库操作
修改主库配置
/etc/my.cnf.d/mariadb-server.cnf
1 2 3 4 5
| [mysqld] server-id = 1 binlog_format = mixed log-bin = mysql-bin
|
重启数据库
创建同步账户
1 2
| grant all on *.* to 'user'@'%' identified by 'password'; flush privileges;
|
备份主库
1
| mysqldump --routines --single_transaction --master-data=2 --databases xxx > backup.sql
|
从库操作
修改从库配置
/etc/my.cnf.d/mariadb-server.cnf
1 2 3 4 5 6 7 8 9
| [mysqld] server-id = 2 relay-log = relay-bin read_only = on
binlog_ignore_db=mysql binlog_ignore_db=performance_schema binlog_ignore_db=information_schema
|
重启数据库
导入数据
确认同步位置
找到类似 CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000025', MASTER_LOG_POS=1244342;
设置同步账户密码以及同步位置
1 2 3 4 5 6 7
| change master to master_host='master_host', master_user='user', master_password='password', master_port=3306, master_log_file='mysql-bin.000025', master_log_pos=1244342;
|
启动同步
检查同步状态
确认 Slave_IO_Running 以及 Slave_SQL_Running 是否都为 Yes
其他问题排除
- 出现
Slave_IO_Running: Connecting,且 Last_IO_Errno: 2003
- 网络是否正常
- 密码是否正确
- MASTER_LOG_POS是否正确
- 是否被SELinux策略阻止
1和2可以在从库服务器上直接通过手动使用同步账号连接主库,检查是否可以登陆
3需要确认 backup.sql 中的位置和设置同步时的位置是否相同
4可以通过 setenforce 0 临时关闭SELinux,永久关闭修改 /etc/selinux/config 中,SELINUX=disabled