环境准备
OS: CentOS
MySQL: 5.7.x
Server1: 10.10.10.1 master
Server2: 10.10.10.2 slave
两台服务器防火墙各开放3306端口并重启,不推荐直接关闭防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld
然后ping一下两台服务器,确保两者相通,MySQL安装过程就不叙述,确保两台服务器MySQL版本一致即可
配置过程
master配置
修改master/etc/my.cnf
文件,添加以下配置
server-id=1 #用于标识,master和slave角色的server-id区分开就行,没有大小之分
log-bin=mysql-bin #binlog文件
binlog-do-db=ufind_db #指定需要同步的数据库,如果需要同步多个数据库,用逗号分隔即可,
# binlog-ignore-db=mysql #忽略的数据库,如果需要忽略多个数据库,用逗号分隔即可
重启MySQL
systemctl restart mysqld
使用Native或者登录控制台执行以下sql
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'10.10.10.2' identified by 'password@7902';
flush privileges;
查看master库状态,如果出现如下字符说明配置正确
show master status;
+------------------+--------------+-------------------+----------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+----------------------------------+--------+
| mysql-bin.000004 | 28125 | ufind_db | information_schema,cluster,mysql |
+------------------+----------+--------------+----------------------------------+--------+
1 row in set (0.00 sec)
记录上面显示的File和Position字段,待会从库同步的时候需要用到
slave配置
修改slave/etc/my.cnf
文件,添加以下配置
server-id=1 #用于标识,master和slave角色的server-id区分开就行,没有大小之分
log-bin=mysql-bin #binlog文件
binlog-do-db=ufind_db #指定需要同步的数据库,如果需要同步多个数据库,用逗号分隔即可,
# binlog-ignore-db=mysql #忽略的数据库,如果需要忽略多个数据库,用逗号分隔即可
使用Native或者登录控制台执行以下sql
change master to
master_host='10.10.10.1',
master_user='slave',
master_password='password@7902',
master_log_file='mysql-bin.000004',
master_log_pos=28125;
启动主从同步
start slave;
查看同步状态
在从库执行以下sql
show slave status;
如果看到一下字段就说明成功
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
当Slave_IO_Running
和Slave_SQL_Running
状态都是Wait
时,说明同步已完成