主从同步的定义
主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。
备份
运行 mysqldump命令
mysqldump -uroot -p 数据库名 > python.sql; --- ‘>’ 重定向输出
恢复
连接mysql , 创建新的数据库
退出连接,执行如下命令
mysql -uroot -p 新的数据库名 < python.sql --- '<' 重定向输入
备份 主服务器 原有数据到 从服务器
如果在设置主从同步前,主服务器上已有大量数据,可以使用mysqldump进行数据备份并还原到从服务器以实现数据的复制。
说明
-u :用户名
-p :示密码
--all-databases :导出所有数据库
--lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改
~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定
1. 在主服务器Ubuntu上进行备份,执行命令:
mysqldump -uroot -p123456 --all-databases --lock-all-tables > ~/master_db.sql
2.在从服务器Windows上进行数据还原
mysql –uroot –p123456 < master_db.sql
3. 配置主服务器master(Ubuntu中的MySQL)
编辑设置mysqld的配置文件,设置log_bin和server-id
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

4.重启mysql服务
sudo service mysql restart
5.配置从服务器
在Windows上 C盘 ProgramData /Mysql/MYSQL Server 5.7/my.inn
1. 在 127行 打开注释
2. 在 Binary Logging 下的 log-bin 打开注释
6.主服务器 中的 server-id = 1 和 从服务器 中的 server-id = 1 的 值不能相同
7.重启mysql服务
sudo service mysql restart
8.登入主服务器Ubuntu中的mysql,创建用于从服务器同步数据使用的帐号
*.* 所有数据库中的所有表
mysql –uroot –p123456
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%' identified by '密码';
FLUSH PRIVILEGES;
9. 获取主服务器的二进制日志信息
SHOW MASTER STATUS;
10.进入windows的mysql,设置连接到master主服务器
change master to master_host='10.211.55.5', master_user='slave', master_password='slave',master_log_file='mysql-bin.000006', master_log_pos=590;
master_host:主服务器Ubuntu的ip地址
master_log_file: 前面查询到的主服务器日志文件名
master_log_pos: 前面查询到的主服务器日志文件位置
11.开启同步,查看同步状态
开启从
start slave;
show slave status\G;

都表示 yes 表示 成功
12. 测试主从同步
在Ubuntu的MySQL中(主服务器)创建一个数据库

在Windows的MySQL中(从服务器)查看新建的数据库是否存在 存在则成功 否则失败!
