https://www.cnblogs.com/zgx/archive/2011/09/13/2174823.html

 

1、准备好3台虚机,一台master,两台slave且都安装好mysql

2、主服务器上登录mysql,创建要同步的库及表

mysql> mysql -uroot -p111111; mysql> CREATE DATABASE NAME; mysql> use NAME; mysql> CREATE TABLE T_NAME(id int,name varchar(20))

3、主服务器新建用户并赋予“REPLICATION SLAVE”的权限(注:mysql8.0版本分三步执行)

mysql> create user 'mslave'@'X.X.X.X' identified by 'password' mysql> grant all privileges on *.* to 'mslave'@'X.X.X.X' with grant option; ( grant 权限列表 on 数据库 to 用户名@访问主机) mysql> flush privileges;

其中:X.X.X.X 为从服务器的ip地址 例如 192.168.50.% 表示该网段下的从服务器

*.* 为当前服务器所有库所有表

with grant option 为表示该用户可以将自己拥有的权限授权给别人

mslave 为可设置的新用户名

password 为可设置的密码

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

4、备份数据库

退出mysql执行备份

mysqldump -uroot -p111111 -B hac>hac.sql

5、远程拷贝到从服务器中

scp 要拷贝的文件 远程服务器ip:/远程目录

例子:scp hac.sql 192.168.50.131:/root

6、修改master服务器上的配置文件(/etc/my.cnf)

log-bin=mysql-bin-master //启用主服务器的二进制的名称 server-id=1 //不能重复 binlog-do-db=要同步的数据库 //同步多个就写多条 binlog-ignore-db=mysql //不同步的数据库

7、重启mysql

systemctl restart mysqld

8、从服务器-导入mysql脚本

mysql -uroot -p111111 <hac.sql

9、从服务器-测试脚本导入是否成功

mysql -uroot -p111111 -e "show databases"

10、从服务器 - 配置etc/my.cnf文件

server-id =2

11、从服务器-重启mysql

systemctl restart mysqld

12、查看master状态

mysql> show master status;

13、从服务器尝试连接主服务器(注意防火墙关闭)

mysql -umslave -p111111 -h 192.168.50.130

14、查看定义的二进制同步文件

ll /var/lib/mysql -rw-r-----. 1 mysql mysql 155 Aug 15 03:30 mysql-bin-master.000001 -rw-r-----. 1 mysql mysql 26 Aug 15 03:30 mysql-bin-master.index

mysql查看二进制文件的记录

show binlog events \G

15、从服务器-关掉

stop slave;

16、从服务器-配置主服务器

change master to master_host='192.168.50.130',master_user='mslave',master_password='1111111';

17、从服务器-启动

start slave;

18、从服务器-检查主从是否配置成功

show slave status \G

 

 

 

Q:配置好后未同步

A:检查是否开启同步

mysql> set sql_log_bin=on;