Linux之docker安装mysql8.0集群 |
您所在的位置:网站首页 › mysql双主原理 › Linux之docker安装mysql8.0集群 |
文章目录
docker安装mysql8.0集群-主主(双主)部署实现1.主从复制的原理2.主主(双主)实现方案2.前置条件3.配置文件添加1)主节A(Master-slave)点配置2)主节B(Master-slave)点配置3)重启两个docker的mysql容器
4.mysql数据库两个主节点设置(执行命令的时候,最好每一步,两个主节点都是同时执行)4.1进入mysql容器:`docker exec -it mysql容器名称/id bash`4.2登录mysql客户端:`mysql -uroot -p123456(密码)`4.3创建用户并授权:用户:`slave`,密码:`123456`4.4查看master状态:`SHOW MASTER STATUS`,记录二进制文件名(mysql-bin.000001)和位置(5778)4.5 设置连接:需要主服务器主机名,登陆凭据,二进制文件的名称和位置4.6 启动slave同步进程4.7 查看slave状态:
5.测试,在主库上插入数据就可以看到效果了6.问题解决
docker安装mysql8.0集群-主主(双主)部署实现
1.主从复制的原理
Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件, 这些记录叫做二进制日志事件(binary log events);Slave 通过 I/O 线程读取 Master 中的 binary log events 并写入到它的中继日志(relay log);Slave 重做中继日志中的事件, 把中继日志中的事件信息一条一条的在本地执行一次,完 成数据在本地的存储, 从而实现将改变反映到它自己的数据(数据重放)。
2.主主(双主)实现方案
实现方案就是把两台mysql都可读写,互为主备,主机A->主机B备份,主机B->主机A备份 2.前置条件两个服务器上分别是:192.168.56.102(主)、192.168.56.105(主) 主主服务器mysql版本最好一致 在两台服务器上启动都启动好两个mysql 安装教程:Linux之centos7下docker 安装部署mysql8.0环境 安装教程:Linux之docker安装mysql8.0集群-主从部署实现 3.配置文件添加 1)主节A(Master-slave)点配置修改 Master 的配置文件/etc/my.cnf,在my.cnf文件中加入如下配置内容 [mysqld] #必须唯一 server-id = 100 #开启及设置二进制日志文件名称 log_bin = mysql-bin binlog_format = MIXED sync_binlog = 1 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。 expire_logs_days =7 # binlog_cache_size = 128m # max_binlog_cache_size = 512m # max_binlog_size = 256M # 要同步的数据库 # binlog-do-db = test # 不需要同步的数据库 binlog-ignore-db = mysql binlog_ignore_db = information_schema binlog_ignore_db = performation_schema binlog_ignore_db = sys 2)主节B(Master-slave)点配置修改 slave 的配置文件/etc/my.cnf,在my.cnf文件中加入如下配置内容 #必须唯一 server-id = 101 #开启及设置二进制日志文件名称 log_bin = mysql-bin binlog_format = MIXED sync_binlog = 1 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。 expire_logs_days =7 # binlog_cache_size = 128m # max_binlog_cache_size = 512m # max_binlog_size = 256M # 要同步的数据库 # binlog-do-db = test # 不需要同步的数据库 binlog-ignore-db = mysql binlog_ignore_db = information_schema binlog_ignore_db = performation_schema binlog_ignore_db = sys 3)重启两个docker的mysql容器 docker restart mysql容器名称 4.mysql数据库两个主节点设置(执行命令的时候,最好每一步,两个主节点都是同时执行) 4.1进入mysql容器:docker exec -it mysql容器名称/id bash 4.2登录mysql客户端:mysql -uroot -p123456(密码) 4.3创建用户并授权:用户:slave,密码:123456 #创建用户 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456'; mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; mysql> CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; #分配权限 mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; #刷新权限 mysql> flush privileges; 4.4查看master状态:SHOW MASTER STATUS,记录二进制文件名(mysql-bin.000001)和位置(5778)注:如果要刷新日志文件可执行:reset master; mysql> SHOW MASTER STATUS; +------------------+----------+--------------+--------------------------------------------------+-------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+--------------------------------------------------+-------------------------------------------+ | mysql-bin.000001 | 5778 | | mysql,information_schema,performation_schema,sys | c7a674f5-3600-11eb-903c-0242ac110002:1-21 | +------------------+----------+--------------+--------------------------------------------------+-------------------------------------------+ 1 row in set (0.00 sec) 4.5 设置连接:需要主服务器主机名,登陆凭据,二进制文件的名称和位置注意:MASTER_LOG_FILE和MASTER_LOG_POS要和主库查看出来状态对上 CHANGE MASTER TO MASTER_HOST='192.168.56.102', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=5778; 4.6 启动slave同步进程 mysql> start slave; 4.7 查看slave状态: mysql> show slave status\G;展示信息: *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.56.102 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2638 Relay_Log_File: 13b2d81a26f9-relay-bin.000004 Relay_Log_Pos: 324 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes成功的标志:Slave_IO_Running: Yes和Slave_SQL_Running: Yes 5.测试,在主库上插入数据就可以看到效果了 6.问题解决这两个博客里有一些问题的解决方案: Linux之centos7下docker 安装部署mysql8.0环境 Linux之docker安装mysql8.0集群-主从部署实现 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |