一、准备环境
两台Linux服务器
两个数据库mysql8.0
windows系统和mysql5.7版本,还是有一些差异的。
可以参考一下链接:
https://blog.csdn.net/qq3434569/article/details/112308028?spm=1001.2014.3001.5501 Windwos系统,5.7版本Mysql数据库主从配置操作方案
二、配置过程
1.配置主数据库
(1)使用root角色登录MYSQL命令行,创建用户并授权
CREATE USER 'databackup'@'从服务器ip' IDENTIFIED WITH mysql_native_password BY 'Admin123456@';
#密码要超过8位有英文大写和特殊字符
GRANT REPLICATION SLAVE ON *.* TO 'databackup'@'从服务器ip';
flush privileges;
(2)配置文件设置
修改 Master 的配置文件/etc/my.cnf,在my.cnf文件中加入如下配置内容
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=数据库1
binlog-do-db=数据库2
# 有几个加几个
(3)重启数据库,配置生效
systemctl restart mysqld
2.主库锁表(或关闭服务)
flush tables with read lock;
3.迁移数据
跨服务器导出导入数据和函数
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错;
在主服务器中进行操作,其中 -R 是导出存储过程和函数
mysqldump -u账号 -p密码 -C -R --databases 数据库1|mysql --host=从数据库ip -u账号 -p密码 数据库1;
4.配置主从关系
(1)主库
mysql命令行,执行命令
show master status;
复制file 和position。
(2)从库设置
修改 slave的配置文件/etc/my.cnf
在my.cnf文件中加入如下配置内容,主从库的server-id必须不一致
[mysqld]
server-id=2
(3)配置主从
mysql命令行,执行命令
change master to
master_host='主服务器ip',
master_user='databackup', #这个是前面开放的用户名和下面的密码
master_password='Admin123456@',
master_log_file='mysql-bin.000001', #binlog 的 File 名称和下面的备份节点
master_log_pos=483;
(4)开启主从复制
start slave
(5)查看主从复制状态
show slave status
必须要两个yes,才算成功。如果slave_io_running,为no,可能原因是,主从库server-id相同。
如果slave_io_running,为connect,可能原因是配置主从的时候,主数据库ip或者账号密码不正确,或者权限不足
5.解除锁表(开启服务)
unlock tables;
三、其它
问题1:无法创建用户。
解决方案:
CREATE USER 'databack'@'从服务器ip' IDENTIFIED WITH mysql_native_password BY 'Admin@123';
问题2:无法授权用户。
GRANT REPLICATION SLAVE ON *.* TO 'databack'@'从服务器ip';
解决方案:
使用root登录
mysql -uroot -pAdmin123456@