主库MySQL配置文件:该配置文件默认是在 /etc/my.cnf
[mysqld]
max_allowed_packet=256M
server-id=1
log-bin=mysql-bin
replicate-do-db=web
auto_increment_increment=2
auto_increment_offset=1
binlog_ignore_db=sys
general_log=on
general_log_file=/var/log/mysqld.log
其中
server-id=1
log-bin=mysql-bin
replicate-do-db=web
这三项是必须的web是数据库名
从库myslq 配置文件
[mysqld]
port=3306
server-id=2
只需要配置一个server-id 即可不能和主库的ID一样 按网上的做法,配置文件改完后都要重启MySQL
直接在服务器上 cd /;
systemctl restart mysqld 输入这个命令即可
接下来要分别在两个库中都建立一个一模一样的名字和密码的账号
,这里会出现非常多坑,建议直接用root 账号,如果密码不一样就修改成一样的
MySQL8后密码规则变了,要使用下面语句将密码改成自然密码
mysql> ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root的密码';
账号问题搞定后
接下来就是在两个服务器上登录 MySQL
先在主库上查看主库的日志文件和偏移量
mysql> show master status;;
这一步必须得;
然后到从库上登录myslq 输入下面语句;直接编辑好了 复制进去即可,是两条语句,也可以分开复制进去;
CHANGE MASTER TO
MASTER_HOST='主库的IP地址',
MASTER_USER='root',
MASTER_PASSWORD='自然密码',
MASTER_LOG_FILE='mysql-bin.000003', #这里是上面一步在主库上查询到的数据库日志;
MASTER_LOG_POS=447749; #这里是上面一步在主库上查询到的数据库日志偏移量;
START slave; 开始复制进程;
到这里就完成了;
接下来输入命令;
查看同步状态;
mysql> show slave status \G;
经常会报错的,要么就是账号问题,要么就是两个数据库的数据结构不同,要么就是日志文件名和写错了,查看日志文件名这步绝对不能省,所以账号问题建议两个库都设置成root ,密码整成一样,都整成自然密码,两个库的结构必须一样这是我上次进行同步的时候踩过的坑,记录于此
我上次进行的时候两个MySQL的版是不同的,主库的是5.6.4,从库的是8.0的版本,8.0以后得密码规则和付权限的都不同,按照网上的说法都在两个库上新建同一个账号,同样的密码,怎么弄权限都都有问题,我直接用root,问题解决,
MySQL8后密码规则变了,要使用下面语句将密码改成自然密码
mysql> ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root的密码';
就是用navicat 能直接登录的就是自然密码,mysql8 新增的用户用navicat 是无法登录的话也是这个问题,如果一开始建立的root账号密码是错的,都没办法在服务器上登录mysql,
就去网上查下,可以直接在myslq 的配置文件上,设置成自然规则密码的
查看同步状态
# mysql -u root -p;
输入密码
mysql> show slave status \G;
这两个都是yes才是正常的,否则就要排查,为了减少问题,建议按我说的来
要停止同步,只需要命令 stop slave;
开始同步命令;start slave;
忘记说了,两个服务器的防火墙都要关闭