****1 mysql主从同步
1.1 相关概念:
1 主从同步介绍(什么是主从同步) 存储数据的服务结构
分为两种角色:
主数据库服务器:接收客户端连接的服务器
从数据库服务器:自动同步主数据库服务器的数据到本机
2 主从同步工作过程?
主服务器必须启用binlog日志
从服务器会有IO线程和SQL线程
IO线程的工作任务:复制master主机 binlog日志文件里的SQL命令到本机的relay-log文件里。
SQL线程的工作任务:执行本机relay-log文件里的SQL语句,实现与Master数据一致。
1.2 配置 mysql主从同步
1 拓扑结构
2 配置mysql主从同步
2.1 配置主服务器(master)具体配置如下:192.168.4.51
启用binlog日志
]# vim /etc/my.cnf
server_id=51
log_bin
:wq
[root@host51 ~]# systemctl restart mysqld
用户授权(给从服务器拷贝sql命令时连接使用的用户)
[root@host51 ~]# mysql -uroot -p123qqq…A
mysql> grant replication slave on . to repluser@"%" identified by “123qqq…A”;
查看日志信息
mysql> show master status;
±------------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±------------------±---------±-------------±-----------------±------------------+
| host51-bin.000001 | 441 | | | |
±------------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
mysql>
2.2 配置从服务器(slave)192.168.4.52 具体步骤如下:
1 指定server_id 并重启数据库服务
]# vim /etc/my.cnf
[mysqld]
server_id=52
:wq
[root@host52 ~]# systemctl restart mysqld
[root@host52 ~]# setenforce 0
[root@host52 ~]# systemctl stop firewalld
2 确保与主数据库服务器数据一致
在主服务器51 做数据的完全备份
[root@host51 ~]# mysqldump -uroot -p123qqq…A --master-data -B bbsdb db1 db3 > /root/bak.sql
[root@host51 ~]# scp /root/bak.sql root@192.168.4.52:/root/
在从服务器52 使用备份文件恢复数据
[root@host52 ~]# mysql -uroot -p123qqq…A < /root/bak.sql
[root@host52 ~]# mysql -uroot -p123qqq…A -e ‘show databases’
[root@host52 ~]# grep host51 /root/bak.sql
CHANGE MASTER TO MASTER_LOG_FILE=‘host51-bin.000001’, MASTER_LOG_POS=441;
[root@host52 ~]#
3 数据库管理员登录服务,指定主服务器信息
mysql> change master to master_host=“192.168.4.51” , master_user=“repluser” , master_password=“123qqq…A” ,
master_log_file=“host51-bin.000001” , master_log_pos=441 ;
4 启动slave进程
mysql> start slave;
5 查看进程状态
MySQL> show slave status \G
Master_Host: 192.168.4.51
Slave_IO_Running:Yes
Slave_SQL_Running: Yes
3 测试主从同步配置
3.1 在主服务添加客户端连接使用的用户
mysql> grant select , insert , update ,delete on db3.* to yaya@"%" identified by “123qqq…A”;
mysql> grant select , insert , update ,delete on db1.* to yaya@"%";
[root@host52 ~]# mysql -uroot -p123qqq…A -e ‘select user from mysql.user’
3.2 在客户端50连接连接主服务器,存储数据
[root@host50 ~]# mysql -h192.168.4.51 -uyaya -p123qqq…A
mysql> show grants