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.配置主服务器的文件
- sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 将server_id = 1和log_bin=xxxx 这两行的注释去掉(83行左右)
- 将该文件server_id 改为1(任意数字,不和从服务器的server_id重复即可)
- 配置完成后重启mysql服务器 sudo service mysql status
4.创建用于在从服务器上登陆主服务器的用户
- 用root账户登陆主服务器 mysql -uroot -p
- 创建用户 grant replication slave on *.* to "slave"@"%" identified by "slave"
- 刷新用户权限 flush privileges;
- 获取主服务器二进制日志 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;