(1)工作原理
(2)主从实现
1) 环境介绍
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
MySQL版本:5.7
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.22-log |
+------------+
2) master端配置
- 准备数据
mysql> create database testdb;
mysql> create table testdb.t1(id int,name varchar(50));
mysql> insert into testdb.t1 values(1,'jack');
mysql> insert into testdb.t1 values(2,'alex');
- 开启二进制日志和配置server-id
#vim /etc/my.cnf
log-bin
server-id=1
- 重启数据库
#systemctl restart mysqld
- 创建授权账号
mysql> grant replication slave,replication client on *.* to 'rep'@'192.168.111.%' identified by 'Reprep@123';
mysql> flush privileges;
- 备份数据库
mysqldump -uroot -pRedhat@123 -A -R --single-transaction --master-data=1 --flush-logs >$(date +%F)-mysql-all.sql
- 把备份的数据库文件拷贝到从库主机上
scp -r 2018-04-26-mysql-all.sql root@192.168.111.152:/root
- 在完整备份后在创建一些数据
mysql> insert into testdb.t1 values(3,'www');
mysql> insert into testdb.t1 values(4,'yyyy');
3)slave端配置
- 验证主库创建的账号是否能够正常登陆,也验证是否有防火墙问题
# mysql -h192.168.111.151 -urep -p'Reprep@123'
- 配置从库的server-id和设置从库只读
注意应用程序连接从库的权限不要给所有权限,只让从库只读
#vim /etc/my.cnf
server-id=2
read-only
- 重启数据库
#systemctl restart mysqld
- 把备份导入到从库上:强烈建议使用source方法导入sql备份到从库中
不建议使用mysql -uroot -pRedhat@123 </root/2018-04-26-mysql-all.sql,不然change master需要指定pos文件和位置点
mysql>source /root/2018-04-26-mysql-all.sql
- 连接主库
mysql> change master to
-> master_host='192.168.111.151', \生成环境建议使用主机名,不建议使用ip地址
-> master_user='rep',
-> master_password='Reprep@123';
- 开启复制和验证状态
mysql> start slave;
mysql> show slave statusG
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 验证数据
mysql> select * from testdb.t1;
+------+------+
| id | name |
+------+------+
| 1 | jack |
| 2 | alex |
| 3 | www |
| 4 | yyyy |
+------+------+