MySQL主从同步的设置

1.备份主服务器的数据库

mysqldump –uroot –p 数据库名 > python.sql; # 按提示输入mysql的密码

mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

  • -u :用户名
  • -p :示密码
  • --all-databases :导出所有数据库
  • --lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改
  • ~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定

2.再从服务器上回复已经备份的主服务器的数据

  • mysql -uroot –p 新数据库名 < python.sql # 根据提示输入mysql密码

3.配置主服务器的文件

  1. sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 将server_id = 1和log_bin=xxxx 这两行的注释去掉(83行左右)
  3. 将该文件server_id 改为1(任意数字,不和从服务器的server_id重复即可)
  4. 配置完成后重启mysql服务器 sudo service mysql status

4.创建用于在从服务器上登陆主服务器的用户

  1. 用root账户登陆主服务器 mysql -uroot -p
  2. 创建用户 grant replication slave on *.* to "slave"@"%" identified by "slave"
  3. 刷新用户权限 flush privileges;
  4. 获取主服务器二进制日志 show master status

从服务器文件配置

1. 把主服务器上导出的master_db.sql备份文件先同步到从服务器上,保证主从数据一致。

把master_db.sql先放到从库的服务器上(注意文件位置要和你打开终端的位置保持一致,比如都在桌面),然后执行如下命令:

mysql -uroot -pmysql < master_db.sql

2. 修改从服务器的配置文件my.ini

加上对应的server-id,要保证不能跟主服务器的server-id一样

保存退出之后输入以下代码重启从服务器:

net stop mysql

net start mysql

3. 连接到从服务器,进行同步工作

输入如下指令

change master to master_host='192.168.13.81', master_user='slave', master_password='slave',master_log_file='mysql-bin.000008', master_log_pos=582;

注意:需要修改的地方有3处,第一个ip地址改成自己主服务器的ip地址,第二个二进制文件要跟主服务器的一致,第三个是pos位置也要与主服务器一致。具体的值参见主服务器配置的第4步。

1. 开始同步

输入命令:start slave;

2. 查看同步状态

输入指令:show slave status \G;

当看到两个yes意味着同步成功。如果没有成功先检查一下主从是否可以ping通,如果主从可以正常通信的话,则从文档的“主服务器配置”的第4步开始把步骤再走一遍。

测试同步

在主服务器创建一个新的数据库“test_slave”

create database test_slave charset=utf8;

猜你喜欢

转载自blog.csdn.net/qq_42626060/article/details/81226271
今日推荐