南京企业网站设计建设,红桥集团网站建设,照片书那个网站做的好,网站空间购买流程一、MySQL主从复制原理#xff1a; 1、MySQL将数据变化记录到二进制日志中#xff1b; 2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中#xff1b; 3、Slave将中继日志中的事件在做一次#xff0c;将数据变化#xff0c;反应到自身#xff08;Slave#xff09;的数…一、MySQL主从复制原理 1、MySQL将数据变化记录到二进制日志中 2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中 3、Slave将中继日志中的事件在做一次将数据变化反应到自身Slave的数据库
详细步骤 1、从库通过手工执行change master to 语句连接主库提供了连接的用户一切条件user 、 password、port、ip并且让从库知道二进制日志的起点位置file名 position 号 start slave 2、从库的IO线程和主库的dump线程建立连接。 3、从库根据change master to 语句提供的file名和position号IO线程向主库发起binlog的请求。 4、主库dump线程根据从库的请求将本地binlog以events的方式发给从库IO线程。 5、从库IO线程接收binlog events并存放到本地relay-log中传送过来的信息会记录到 master.info中 6、从库SQL线程应用relay-log并且把应用过的记录到relay-log.info中默认情况下已经应用过的 relay 会自动被清理purge
二、MySQL主从复制实验
1、环境准备 两台机器一主一从
2、主库配置
#保证主从两机时间统一安装ntpdateyum install ntpdate -y
#启动ntpdate服务[rootlocalhost ~]# systemctl start ntpdate
#统一时间(主从两机使用ntpdate命令)
[rootlocalhost ~]# ntpdate ntp1.aliyun.com2 Aug 11:58:01 ntpdate[6306]: adjust time server 120.25.115.20 offset -0.039909 sec
#主库在/etc/my.cnf设置server-id值并开启binlog参数
[rootlocalhost ~]# vim /etc/my.cnf
#增加如下两条命令如下图一
log_bin mysql-bin
server_id 11#主从数据库文件保持一致在主库创建三个新的数据库dbdb1db2 退出并重新启动mysqld服务然后通过mysqldump进行备份
[rootlocalhost ~]#systemctl restart mysqld
[rootlocalhost ~]# mysqldump -uroot -p123 -B db db1 db2 db.sql
#通过scp将db.sql传输给从库
[rootlocalhost ~]# scp db.sql 192.168.10.147:/opt/#从库查看传输的sql文件
[rootlocalhost ~]# cd /opt
[rootlocalhost opt]# ls
db.sql
#从库登录到mysql执行如下命令
mysql source /opt/db.sql
mysql show databases;
#主库创建同步账号
mysql grant replication slave on *.* to rep192.168.10.% identified by
123;
mysql show master status;
-------------------------------------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
-------------------------------------------------------------------------------
| mysql-bin.000008 | 154 | | | |
-------------------------------------------------------------------------------
1 row in set (0.00 sec)#此时回到从库设置设置server-id值和binlog参数如图一与主库一样操作
[rootlocalhost opt]# vim /etc/my.cnf
log_binmysql-binserver-id13
[rootlocalhost opt]# systemctl restart mysqld
#登录mysql
mysql change master to
MASTER_HOST192.168.10.145,
MASTER_PORT3306,#默认端口号可不写
MASTER_USERrep,
MASTER_PASSWORD123,
#参照show master status返回的结果填写相应的值
MASTER_LOG_FILEmysql-bin.000008,
MASTER_LOG_POS154;mysql start slave;
mysql show slave status \G#结果如图二查看slave_IO_Running和slave_SQL_Running的状态是否都为yes。若都为yes则配置成功反之则需查看mysql日志文件/var/log/mysqld.log图一 图二 三、检验 主库当前的数据库数量 从库
#在主库创建新的数据库
mysql create database if not exists db4;
Query OK, 1 row affected (0.00 sec)#查看主库当前数据库状态
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| -S |
| db |
| db1 |
| db2 |
| db3 |
| db4 |
| mysql |
| performance_schema |
| sys |
--------------------
10 rows in set (0.00 sec)从库
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| db |
| db1 |
| db2 |
| db3 |
| db4 |
| mysql |
| performance_schema |
| sys |
--------------------
9 rows in set (0.00 sec)mysql四、错误检查 当进行一主两从配置时有一台从库机器出现与主库机器UUID相同的问题。 解决办法 在该从库中登录mysql随机获取一个UUID
mysql select UUID();
--------------------------------------
| UUID() |
--------------------------------------
| c06c559d-3132-11ee-80ec-000c29f96d4c |
--------------------------------------
1 row in set (0.00 sec)#查找auto.cnf文件
find / -iname auto.cnf
#在对应路径找到后
vim auto.cnf
#将文件中的UUID改为之前获取的UUID如下图
#重启mysqld
systemctl restart mysqld
#登录mysql执行如下操作并观察是否为双yes
show slave status \G