环境
我的环境是centos7、MySQL8.1
主库:192.168.3.33、从库:192.168.3.88
开始主从复制前,需要两台服务器的操作系统一样,mysql的两台服务器的uuid一定要不同,数据库名与表完全一样即可。
uuid所在的文件地址:vim /var/lib/mysql/auto.cnf
如果uuid相同,就停止从库的mysql服务,删除他的auto.cf文件,在启动数据库服务即可。
配置主库
vim /etc/my.cnf
添加如下内容
#日志文件目录
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#设置主服务器的ID,可以任意配置但是多个主从之间不能重复
server-id=1
#需要复制的数据库,如不加就复制整个mysql数据库
binlog-do-db=axs
#不需要复制的数据库
#binlog-ignore-db=mysql
log-bin=mysql-bin
重启服务
service mysqld restart
或者
systemctl restart mysqld
登录主库
mysql -u root -p
查找主库状态
show master status;
配置从库
vim /etc/my.cnf
添加如下内容
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=3
#replicate-do-db=axs
#replicate-ignore-db=mysql
#库设为只读的
#read_only=1
重启服务
service mysqld restart
或者
systemctl restart mysqld
登录从库
mysql -u root -p
以下分别是主库地址,数据库用户,密码。还有上面的主库状态信息
mysql>change master to
>MASTER_HOST='192.168.3.33',
>MASTER_USER='root',
>MASTER_PASSWORD='123456!',
>MASTER_LOG_FILE='mysql-bin.000003',
>MASTER_LOG_POS=383618;
如果出现ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread错误
STOP SLAVE IO_THREAD;
开启主从同步
start slave;
查看从机状态
show slave status\G
两个都为yes代表成功,显示no的话就 cat /var/log/mysqld.log 查看日志