Mysql主从配置

配置方法

  1. 主配置log-bin,指定文件的名字,通过log日志实现主从
  2. 主配置server-id,默认为1
  3. 从配置server-id,与主不能重复
  4. 主创建备份账户并授权 REPLICATION SLAVE
  5. 主进行锁表 FLUSH TABLES WITH READ LOCK;
  6. 主找到log-bin的位置 SHOW MASTER STATUS
  7. 主备份数据 mysqldump --all-databases --master-data > dbdump.db
  8. 主进行解锁 UNLOCK tables
  9. 从 导入dump的数据
  10. 在从上设置主的配置
  11. 执行start slave

配置步骤

打开主数据库的my.cnf

vim /etc/my.cnf

在mysqld下配置属性

log-bin=onewuqi_mysql
server-id=1

file

配置后重启数据库

同样打开从数据库的my.cnf,server-id为2
file

进入主数据库,创建用户,并授权

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值
file

接着,将当前数据备份到dump.db中,需要注意的是,这条命令不能在mysql中运行,必须重新打开一个连接窗口才可以,因为当前的窗口将mysql进行了锁表,如果退出mysql,那么锁也会关闭

mysqldump --all-databases --master-data > dbdump.db
//如果提示没有权限就添加上 -uroot -p
mysqldump --all-databases --master-data > dbdump.db -uroot -p

执行完毕,可以看到文件已经备份成功
file

接着在从数据库将文件复制过来,可以直接使用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

当前主表与从表数据是一致的
file

主表中添加一条数据,然后刷新从表
file

数据同步没有问题

发表回复