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;