Mysql主从配置
最后更新于:2022-10-13 17:48:53
配置方法
- 主配置log-bin,指定文件的名字,通过log日志实现主从
- 主配置server-id,默认为1
- 从配置server-id,与主不能重复
- 主创建备份账户并授权 REPLICATION SLAVE
- 主进行锁表 FLUSH TABLES WITH READ LOCK;
- 主找到log-bin的位置 SHOW MASTER STATUS
- 主备份数据 mysqldump --all-databases --master-data > dbdump.db
- 主进行解锁 UNLOCK tables
- 从 导入dump的数据
- 在从上设置主的配置
- 执行start slave
配置步骤
打开主数据库的my.cnf
vim /etc/my.cnf
在mysqld下配置属性
log-bin=onewuqi_mysql
server-id=1
配置后重启数据库
同样打开从数据库的my.cnf,server-id为2
进入主数据库,创建用户,并授权
create user 'repl'@'%' identified by "Onewuqi@123456";
grant replication slave on *.* to 'repl'@'%';
flush privileges;
对主表进行锁表,这样所有的写操作都不能执行了,然后将数据从主库配分到从库,然后查询bin-log的位置,记录bin-log的位置,然后在把主库放开,接下来主表发生的数据就可以备份到从库了。
flush tables with read lock;
读取log-bin
show master status;
记住当前position值
接着,将当前数据备份到dump.db中,需要注意的是,这条命令不能在mysql中运行,必须重新打开一个连接窗口才可以,因为当前的窗口将mysql进行了锁表,如果退出mysql,那么锁也会关闭
mysqldump --all-databases --master-data > dbdump.db
//如果提示没有权限就添加上 -uroot -p
mysqldump --all-databases --master-data > dbdump.db -uroot -p
执行完毕,可以看到文件已经备份成功
接着在从数据库将文件复制过来,可以直接使用scp命令,或其他工具
scp root@193.168.0.111:~/dbdump.db .
将数据同步到从数据库
mysql < dbdump.db -uroot -p
同步完成后,将主库的锁放开
unlock tables;
从数据库配置主数据库信息
change master to
-> master_host='192.168.0.112',
-> master_user='repl',
-> master_password='onewuqi@123456',
-> master_log_file='onewuqi_mysql.000001',
-> master_log_pos=711
-> ;
执行start slave
当前主表与从表数据是一致的
主表中添加一条数据,然后刷新从表
数据同步没有问题