一、主从复制
1、主从复制作用
主从复制:主设备通过二进制日志传输到从设备,从设备通过二进制日志和主同步数据。
作用:负载均衡读操作,备份(实时备份,不能替换手动的备份),高可用和故障切换,数据分布,Mysql升级。
2、主从复制原理
1主节点负责用户的写操作,用户发起写操作后,会修改数据库
2.数据库修改后,会更新主节点上的二进制日志
3.主服务器会产生一个 dump线程, 一边读取二进制日志
一边将二进制日志通过 网络传给从服务器
4.从服务器会开启io线程,接收主服务器的二进制日志
5 如果数据量较大,不会存在内存中 ,会写入中继日志,这时只是生成
了一个文件,并没有同步
6.从服务器再开启 sql线程将 中继日志中 操作写入数据库完成更新
MySQL主从复制实战
master:192.168.10.136 server_id=120
slave:192.168.10.135 server_id=130
实验之前得保证两台机器能够通过ssh远程连接
关闭2台服务器的firewalld以及selinux,重置mysql密码为Admin@123
[root@localhost ~]#vim /etc/my.cnf #修改文件 [mysqld] server_id=100 log-bin=/data/mysql/mysql-bin [root@localhost ~]#mkdir /data/mysql/ -p #建立文件夹 [root@localhost ~]#chown mysql.mysql /data/ -R #注意修改权限 [root@localhost ~]#systemctl restart mysqld mysql -uroot -p'Admin@123'
主节点配置
vim /etc/my.cnf [mysqld]下一行添加内容: server_id=11 #serverid建议配置为ip地址最后8位 log-bin=/data/mysql/mysql-bin #指定二进制日志文件保存位置为/data/mysql/,保存后退出 mkdir -p /data/mysql #创建保存二进制文件的目录 chown mysql:mysql -R /data/ #目录的属主属组都给到mysql用户 systemctl restart mysqld #重启数据库 mysql -uroot -p'Admin@123' #登录数据库 grant replication slave on *.* to test@'192.168.30.%' identified by 'Admin@123'; #创建复制用户只要是192.168.30开头的地址都可使用用户名test密码Admimin@123登录数据库。 show master status; #查看主从复制从那个二进制日志的那个初始节点开始,从服务器配置需要依赖此条查看结果,如下图
从节点配置
vim /etc/my.cnf [mysqld]下一行添加内容: server_id=12 #serverid建议配置为ip地址最后8位 log-bin=/data/mysql/mysql-bin #指定二进制日志文件保存位置为/data/mysql/ relay-log=relay-log-bin#开启中继日志 relay-log-index=slave-relay-bin.index#添加,定义中继日志文件的位置和名称,保存后退出 mkdir -p /data/mysql #创建保存二进制文件的目录 chown mysql:mysql -R /data/ #目录的属主属组都给到mysql用户 systemctl restart mysqld #重启数据库 mysql -uroot -p'Admin@123' #登录数据库 help change master to #可以查看配置帮助复制出来修改,或直接复制下面模板 CHANGE MASTER TO MASTER_HOST='192.168.30.11', #主服务器主机ip MASTER_USER='test', #主从复制登录用户名 MASTER_PASSWORD='Admin@123', #主从复制登录用户名的密码 MASTER_PORT=3306, #主服务器数据库端口 MASTER_LOG_FILE='mysql-bin.000001', #从那个二进制日志开始复制,show master status;看到的结果 MASTER_LOG_POS=448; #从二进制日志的那个at节点开始复制,show master status;看到的结果 start slave; #开启主从复制 show slave status\G #查看主从复制状态,找到Slave_IO_Running: Yes Slave_SQL_Running: Yes 此2个参数为yes则主从复制开启完成。
实验结果
主数据库: create databases test1; #创建一个test1测试库 备数据库: show databases; #查看是否同步到test1库
标签:主从复制,二进制,数据库,Mysql,mysql,日志,data From: https://www.cnblogs.com/trist-commot/p/17245038.html