MySQL 主从配置(一主一从)

  • ※ 主从同步
  • 1. Docker 安装 MySQL
  • 2. 配置 主(master)容器
  • 3. 配置 从(slave)容器
  • 4. 主(master)从(slave)复制

※ 主从同步

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)

复制异步进行,从服务器无需一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

  • 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
  • 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
  • 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

1. Docker 安装 MySQL

作为准备阶段,我们需要下载 MySQL 镜像,并准备主从两个容器

仓库中查询MySQL

输入docker search mysql 在docker 镜像仓库中查询 MySQL镜像

拉取 MySQL 镜像

随后使用docker pull docker.io/mysql命令下载该版本(即“拉取”镜像)

下载完成后,使用docker image ls命令查看镜像列表:

运行 主(master)容器

主从容器必须设置不同的对外端口,这里我们规定,主容器的端口号设置为3310,从容器的端口号设置为3311

docker run -itd --name=mysql_master -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123 docker.io/mysql

使用docker ps命令查询 主(master)容器 是否启动:

运行 从(slave)容器
设置从容器的端口号为3311

查询 从(slave)容器 是否启动:

使用navicat测试是否连通


至此,容器准备工作完成!

【注】连接失败 可能原因:防火墙未开放目标端口号

2. 配置 主(master)容器

配置阶段:配置 主(master)容器

进入 master 容器内

使用如下命令进入 master容器内:

docker exec -it mysql_master /bin/bash


进入 /etc/mysql 文件夹

使用 vi/vim 编辑 my.cnf 文件

vi/vim 没有安装,解决步骤:

  • 执行 apt-get update 做准备工作:

  • 执行 apt-get install vim 安装vim

  • 使用vim my.conf进行编辑 my.cnf

  • 在my.cnf添加 唯一ID 和 必要信息(使用“i” 键进入编辑模式,结束后Esc + :wq 保存修改)

  • 重新启动容器:使配置生效

创建专用账户(slave)进行主从同步

  • 使用root账户登入MySQL:
  • 创建专用同步账户(slave):

3. 配置 从(slave)容器

配置阶段:配置 从(slave)容器

进入 slave 容器内

进入 /etc/mysql 文件夹

使用 vi/vim 编辑 my.cnf 文件

  • 准备工作:

  • 编辑文件:
server-id=201
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin

4. 主(master)从(slave)复制

关联阶段:主从复制

查看master状态

  • 进入master容器:
  • 显示主服务器状态:

在slave中执行命令

  • 使用命令 docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql_master 查询master容器的独立IP
  • 进入slave容器,执行SQL语句:

master_host:Master库的地址,容器独立ip
master_port:Master库的端口号,容器端口号(默认3306)
master_user:用于数据同步的用户
master_password:用于数据同步用户的密码
MASTER_LOG_FILE:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
MASTER_LOG_POS:从哪个 Position 开始读,即上文中提到的 Position 字段的值
  • 开启主从复制过程
  • 配置成功:
show slave status \G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 172.17.0.2Master_User: slaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 879Relay_Log_File: edu-mysql-relay-bin.000002Relay_Log_Pos: 324Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 1416Relay_Log_Space: 537Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 200Master_UUID: a699d8b9-f9dc-11eb-a124-0242ac110002Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 0Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:Master_public_key_path:Get_master_public_key: 0Network_Namespace:
1 row in set, 1 warning (0.00 sec)ERROR:
No query specified

可能遇到的错误:

查看主库:

USE mysql;
SELECT plugin FROM user WHERE user = 'slave';


原来是主库 slave用户的 plugin 是 caching_sha2_password 导致连接不上,修改为mysql_native_password 即可解决。

ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'root';


如果还是出现错误,可以尝试删除 salve 用户、抛弃权限,重新建立即可:

  • 删除用户命令:
DELETE FROM user WHERE user='用户名';
flush privileges;
DROP user 用户名@'%';

在图形化界面navicat中测试

建立数据库 test_db 进行测试:


至此,MySQL 主从配置完成!

【Docker】MySQL 主从配置(一主一从)相关推荐

  1. docker mysql.sock,Docker mysql主从配置

    Docker mysql主从配置 一:Mysql基于Docker的主从复制搭建 1:安装docker,安装步骤可见我之前的文章:Docker-常用基建的安装与部署 docker ps 命令查询当前的容 ...

  2. docker mysql 主从配置

    2019独角兽企业重金招聘Python工程师标准>>> 1.首先创建两个文件my-m.cnf(主库配置) .my-s.cnf(从库配置) my-m.cnf 内容如下 # Copyri ...

  3. docker mysql主从_使用docker 实现MySQL主从同步/读写分离

    1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...

  4. mysql主从配置流程

    一.mysql主从配置原理 1.master将操作记录写到二进制日志中(binary log)中: 2.slave IO 线程将master的binary log events读写到它的中继日志(re ...

  5. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  6. MySql(18)——Linux MySQL主从配置

    MySQL 主从配置 Author:xushuyi 参照技术:http://www.cnblogs.com/kevingrace/p/6256603.html 1. 主从数据库 1.主库:192.16 ...

  7. mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区

    转载:https://www.cnblogs.com/alvin_xp/p/4162249.html 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层 ...

  8. mysql主从配置访问_Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  9. mysql主从配置对解决并发有用_MySQL主从配置,读写分离

    大型网站为了缓解大量的并发访问,要网站实现分布式负载均衡.但是数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果不堪设想.这时 ...

  10. Windows下MySql主从配置实战教程

    Windows下MySql主从配置实战教程 MySql的主从配置教程 主库MySql的安装 1.MySQL的下载 2.MySQL配置文件的编写 3.初始化数据库 4.安装服务 5.启动MySql 6. ...

最新文章

  1. iOS 字符属性NSAttributedString描述
  2. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR... 2011年08月05日 09:08:15
  3. pat 团体赛练习题集 L2-008. 最长对称子串
  4. mysql 查询帖子 用户_我要用sql查询出来,我所发布的帖子和我关注的用户发布的帖子,这个sql该怎么写啊?...
  5. docker部署django项目、mysql主从搭建、django实现读写分离
  6. Taro+react开发(50) 小程序触底操作
  7. idea 热部署时 tomcat处 没有update classes and resource 选项
  8. image.merge图像有什么变化_图像特征工程:HOG特征描述子介绍
  9. [NSUserDefaults]的使用:登陆后不再显示登录界面。
  10. 威纶触摸屏如何组态设置离散量报警及报警历史记录?
  11. iis6 增加PHP+MYSQL等时,记得 PHP目录要给EVERYONE权限
  12. U深度U盘启动盘制作教程
  13. Aftereffect中英文切换技巧
  14. DSO Framer 使用介绍(ZZ)转
  15. 百趣代谢组学文献分享 | 建立基于代谢组学的ICU脓毒症患者预后预测模型
  16. Android应用中捕捉所有点击事件实现
  17. 四阶巴特沃兹低通滤波器的设计与仿真
  18. 分享 82个实用的前端开发工具
  19. 针对电脑进行网络诊断显示“您可能需要与该网络的Internet服务提供商ISP签署协议才能获得访问Internet的权限”问题的解决方法
  20. python----将当前目录的所有扩展名为“html”的文件修改为扩展名为“htm”的文件。

热门文章

  1. 如何将html放到虚拟主机上
  2. 搭建php实验报告_php实验报告..doc
  3. 高等数学基础03:函数的连续性
  4. 【经验】SQL Server 2008 R2 安装教程
  5. 打印程序HELLOWORLD
  6. 华为vrrp默认优先级_华为vrrp配置实例
  7. win10 win7 一键获取TrustedInstaller权限
  8. 东芝抢先一步,推出了全球首款16TB容量的硬盘MG08系列
  9. prayaya v3-国产神操作系统
  10. 使用selenium调用qq游览器(基于Chrome浏览器)