网站模板建设二级目录Wordpress 对比wagtail
news/
2025/10/9 13:18:01/
文章来源:
网站模板建设二级目录,Wordpress 对比wagtail,wordpress 微信 权限,深圳h5网站公司1 概述
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器#xff0c;然后在从库上对这些日志重新执行#xff08;也叫重做#xff09;#xff0c;从而使得从库和主库的数据保持同步。
Mysql支持一台主库同时向多台从库进行复制#xff0c;从库同时可以…1 概述
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器然后在从库上对这些日志重新执行也叫重做从而使得从库和主库的数据保持同步。
Mysql支持一台主库同时向多台从库进行复制从库同时可以作为其他从服务器的主库实现链状复制。
Mysql复制的优点主要包含以下三个方面
主库出现问题可以快速切换到从库提供服务实现读写分离降低主库的访问压力可以在从库执行备份以避免备份期间影响主库服务。
2 原理 主从复制主要步骤如下
Master主库在事务提交时会把变更记录在二进制日志文件Binlog中从库读取主库的二进制日志文件Binlog吸入从库的中继日志Relay LogSlave重做中继日志中的操作将改变反应到自己的数据库中。
3 搭建
3.1 准备
我这里是通过docker镜像来搭建mysql主从服务基础环境如下表所示
软件版本描述docker desktop4.21.1docker容器桌面版msyql:latestoraclelinux/mysql-community-server-minimal 8.0.33mysql镜像
3.2 启动容器
启动 Master和Slave容器
docker run -it -p 3309:3306 --name mysql8-master --privilegedtrue \
-v /Users/gaogzhen/data/docker/mysql/mysql8/node-master/conf/conf.d:/etc/mysql/conf.d \
-v /Users/gaogzhen/data/docker/mysql/mysql8/node-master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD123456 -d mysql
docker run -it -p 3340:3306 --name mysql8-slave --privilegedtrue \
-v /Users/gaogzhen/data/docker/mysql/mysql8/node-slave/conf/conf.d:/etc/mysql/conf.d \
-v /Users/gaogzhen/data/docker/mysql/mysql8/node-slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD123456 -d mysql使用docker desktop的话可以简单配置不挂载配置和数据目录直接同UI窗口修改在linux服务器环境建议挂载配置和数据目录方便查看和修改。
3.3 修改配置文件
3.3.1 Master配置
修改Master配置
不挂载直接进入容器修改式 docker exec -it mysql8-master bash cd /etc vim my.cnf 这个时候会报错 bash: vi: command not found需要安装vimapt-get install vimapt-get updateapt-get install vim在my.cnf中添加如下配置 [mysqld]
## 同一局域网内注意要唯一
server-id100
## 开启二进制日志功能可以随便取关键
log-binmysql-bin配置完成之后需要重启mysql服务使配置生效。使用service mysql restart完成重启。重启mysql服务时会使得docker容器停止我们还需要docker start master启动容器。 Master数据库创建数据同步用户授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限用于在主从库之间同步数据。 docker exec -it mysql8-master bash 进入到master容器中 mysql -u root -p 输入密码 CREATE USER ‘slave’‘%’ IDENTIFIED BY ‘123456’; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’‘%’;
这里我们通过修改挂载的配置目录在conf.d下面新创建一个配置文件的方式来修改不去修改my.cnf文件。
vim master.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id100
## 开启二进制日志功能可以随便取关键
log-binmysql-bin创建mysql用户和授权可以直接本地执行如下命令
mysql -h127.0.0.1 -P3309 -uroot -p3.3.2 Slave配置
步骤同上面相同配置如下
[mysqld]## 设置server_id,注意要唯一server-id101 ## 开启二进制日志功能以备Slave作为其它Slave的Master时使用log-binmysql-slave-bin ## relay_log配置中继日志relay_logedu-mysql-relay-bin
配置完成之后需要重启mysql服务使配置生效。使用service mysql restart完成重启。重启mysql服务时会使得docker容器停止我们还需要docker start slave启动容器。
3.4 查看Master信息 进入到mysqlmysql -u root -pshow master status;记录Filemysql-bin.000001, Position157 3.5 查看Master和Slave容器IP地址
docker inspect --format{{.NetworkSettings.IPAddress}} mysql8-master
172.17.0.2
gaogzhengaogzhendeMacBook-Pro conf.d %
docker inspect --format{{.NetworkSettings.IPAddress}} mysql8-slave
172.17.0.33.6 配置Slave与Master关联
进入Slave从库容器
进入mysqlmysql -u root -pchange master to master_host‘172.17.0.2’, master_user‘slave’, master_password‘123456’, master_port3306, master_log_file‘mysql-bin.000001’, master_log_pos 157, master_connect_retry30;字段说明
master_portMaster的端口号指的是容器的端口号
master_user用于数据同步的用户
master_password用于同步的用户的密码
master_log_file指定 Slave 从哪个日志文件开始复制数据即上文中提到的 File 字段的值
master_log_pos从哪个 Position 开始读即上文中提到的 Position 字段的值
master_connect_retry如果连接失败重试的时间间隔单位是秒默认是60秒3.7 Slave开启主从复制 在Slave 中的mysql终端执行show slave status \G;用于查看主从同步状态 SlaveIORunning 和 SlaveSQLRunning 都是No start slave开启主从复制 再次查询主从同步状态show slave status \G; 报错了 Last_IO_Error: Error connecting to source slave172.17.0.2:3306. This was attempt 1/86400, with a delay of 30 seconds between attempts. Message: Authentication plugin caching_sha2_password reported error: Authentication requires secure connection.Last_SQL_Errno: 0解决方案在后面 3.8 主从复制测试 在master创建一个test数据库在slave中也会生成一个test数据库。 测试过程如下图所示
4 常见错误
4.1 Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires secure connection.
在Master库做如下修改
ALTER USER slave% IDENTIFIED WITH mysql_native_password BY 123456;修改用户加密方式使用mysql_native_password
4.2 Master修改之后重新设置Slave
在修改了Master库之后未重新设置关联配置
-- Master库
show master status;
-- Slave 库
stop slave;
change master to master_host172.17.0.2, master_userslave, master_password123456, master_port3306, master_log_filemysql-bin.000003, master_log_pos 440, master_connect_retry30;
start slave;如下图所示状态正常 结语
如果小伙伴什么问题或者指教欢迎交流。 ❓QQ:806797785 参考链接:
[1]MySQL数据库视频[CP/OL].2020-04-16.p158-162.
[2]mysql官网使用配置文件文档[CP/OL].
[3]基于docker搭建的mysql主从复制[CP/OL].
[4]Authentication plugin ‘caching_sha2_password’ cannot be loaded[CP/OL].
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932577.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!