搭建mysql一主一备

一、master主机上部署=====
1.上传镜像文件mysql5.7.tar到/home目录下。
2.若无docker,先安装docker工具。
安装docker
进入到/home/sec-install/bin目录下执行sh start.sh
等待安装…
查询是否安装成功命令 docker version

3.使用load进行从tar文件导出镜像 docker load < /home/mysql5.7.tar
4.然后查看是否出现镜像 docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 2a0961b7de03 2 weeks ago 462MB
8b94b71dcc1e 3 months ago 448MB
mysql 5.6 dd3b2a5dcb48 5 months ago 303MB

5.根据镜像文件创建容器
宿主机上如无 /data/mysqlmaster/conf、/data/mysqlmaster/logs、/data/mysqlmaster/data 目录 手动创建
mkdir –p /data/mysqlmaster/conf;
mkdir –p /data/mysqlmaster/logs;
mkdir –p /data/mysqlmaster/data;

5.1执行创建并运行容器的命令:
docker run -d -p 3308:3306 --name mysql-master -v /data/mysqlmaster/conf:/etc/mysql/conf.d -v /data/mysqlmaster/logs:/logs -v /data/mysqlmaster/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxadmin mysql:5.7 --lower_case_table_names=1;
5.2 查看目前启动的容器命令 docker ps
[root@xndfh home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
62e8c5bd95fb mysql:5.7 “docker-entrypoint.s…” 50 seconds ago Up 49 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp mysql-master
添加配置文件:
/data/mysqlmaster/conf目录下创建my.cnf文件

在my.cnf里面输入如下信息

[mysqld]

同一局域网内注意要唯一

server-id=100

开启二进制日志功能

log-bin=mysql-bin

进入mysql-master容器里面重启mysql服务

docker exec -it mysql-master /bin/bash 进入mysql-master容器

service mysql restart重启mysql服务器

重启mysql服务之后,mysql-master容器被关掉了,所以我们需要docker start mysql-master在启动下容器

[root@iZssfdf /]# docker exec -it mysql-master /bin/bash
root@62e8c5bd95fb:/# service mysql restart
[root@iZ2zessddfjrxexaZ /]# docker start mysql-master

再次进入mysql-master容器授予slave用户 REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据[slave用户是用来做数据同步的]

1. CREATE USER ‘slave’@‘%’ IDENTIFIED BY ‘xxxadmin’;

2. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@‘%’;

3. show master status; 查看主库状态,请记住File和Position对应的值

[root@iZ2ze31n2wkah07fjrxexaZ /]# docker exec -it mysql-master /bin/bash
root@62e8c5bd95fb:/# mysql -u root -pJitadmin
mysql> CREATE USER ‘slave’@‘%’ IDENTIFIED BY ‘Jitadmin’;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@‘%’;
Query OK, 0 rows affected (0.01 sec)
mysql>flush privileges;

mysql> show master status;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000001 | 769 | | | |
±-----------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
mysql>

二、slave主机上部署========================

6.将主机:47.94.184.41的home下的文件 复制到当前主机的home目录下
scp -r root@192.168.0.18:/home/* /home
安装docker
进入到/home/sec-install/bin目录下执行sh start.sh
等待安装…
查询是否安装成功命令 docker version

1.上传镜像文件mysql5.7.tar到/home目录下。
2.若无docker,先安装docker工具。
3.使用load进行从tar文件导出镜像 docker load < /home/mysql5.7.tar
4.然后查看是否出现镜像 docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 2a0961b7de03 2 weeks ago 462MB
8b94b71dcc1e 3 months ago 448MB
mysql 5.6 dd3b2a5dcb48 5 months ago 303MB

5.根据镜像文件创建容器
宿主机上如无 /data/mysql/conf、/data/mysql/logs、/data/mysql/data 目录 手动创建
mkdir -p /data/mysqlslave/conf
mkdir –p /data/mysqlslave/logs
mkdir –p /data/mysqlslave/data
5.1执行创建并运行容器的命令:
docker run -d -p 3309:3306 --name mysql-slave -v /data/mysqlslave/conf:/etc/mysql/conf.d -v /data/mysqlslave/logs:/logs -v /data/mysqlslave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxadmin mysql:5.7 --lower_case_table_names=1;
5.2 查看目前启动的容器命令 docker ps
[root@iZ2ze31n2wkah07fjrxexbZ data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d4b5f082553 mysql:5.7 “docker-entrypoint.s…” 14 seconds ago Up 13 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp mysql-slave

mysql-slave配置文件修改

[root@iZ2ze31n2wkah /]# cd /data/mysqlslave/conf
[root@iZ2ze31n2wkah conf]# vi my.cnf

在my.cnf里面输入如下信息

[mysqld]

设置server_id,注意要唯一

server-id=101

开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-slave-bin

relay_log配置中继日志

relay_log=edu-mysql-relay-bin

进入mysql-slave容器里面重启mysql服务

docker exec -it mysql-slave /bin/bash 进入mysql-master容器

service mysql restart重启mysql服务器

这里又一点要注意,重启mysql服务之后,mysql-slave容器被关掉了,所以我们需要docker start mysql-slave在启动下容器

[root@in2wkah /]# docker exec -it mysql-slave /bin/bash
root@9d4b5f082553:/# service mysql restart
[root@iZ2ze31n2wkafj /]# docker start mysql-slave

再次进入mysql-slave容器,连上mysql-slave数据库

[root@iZ2ze31n2wka /]# docker exec -it mysql-slave /bin/bash
[root@iZ2ze31n2 conf]# docker exec -it mysql-slave /bin/bash
root@9d4b5f082553:/# mysql -u root -pJitadmin

mysql> change master to master_host=‘192.168.0.1’, master_port=3308, master_user=‘slave’,master_password=‘Jitadmin’,master_log_file=‘mysql-bin.000001’, master_log_pos=769;
mysql> stop slave; //停止slave
mysql> start slave; //启动slave
#查看备份机器的mysql状态:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event #表示成功了
Master_Host: 192.168.0.18
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 769
Relay_Log_File: edu-mysql-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 769
Relay_Log_Space: 531
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_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: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 100
Master_UUID: 8d7960fd-ee2f-11ec-a257-0242ac110002
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:

#经测试向master机器上mysql中新建库,表,及插入数据,slave机器上的会自动同步过来, 通过!
#至此mysql5.7的一主一备环境搭建完毕!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Windows上搭建MySQL主备一键脚本,可以按照以下步骤进行操作: 1. 首先,你需要下载并安装MySQL的Windows安装程序。你可以从MySQL官方网站的下载页面上找到适用于Windows的MySQL安装程序,选择适合你系统版本的下载链接。 2. 下载完成后,运行安装程序并按照安装向导进行安装。在安装过程中,可以选择自定义安装选项,并设置MySQL的安装路径及其他相关配置。 3. 接下来,你需要下载主备一键搭建脚本。这些脚本可以从MySQL社区中的资源库或开源项目中获取。搜索关键词“MySQL主备一键搭建脚本”,你可以找到一些可用的脚本。 4. 下载脚本后,解压缩脚本文件,并查看里面的说明文档,根据文档进行配置。 5. 运行主备一键搭建脚本,并根据脚本的提示进行操作。脚本通常会要求提供一些配置参数,例如主库和备库的IP地址、用户名、密码等信息。 6. 在脚本执行过程中,它会自动配置主库和备库的设置,并在主库上创建和管理备份和日志文件。脚本还会配置主备复制和监控机制,确保数据同步和故障转移的正常运行。 7. 执行完脚本后,你可以通过连接MySQL客户端工具验证主备复制是否正常工作,以及在主库上插入、更新或删除数据,看看是否在备库上同步生效。 请注意,使用第三方脚本需谨慎,最好选择可信赖的脚本并做好备份和测试工作。此外,可以参考MySQL官方文档和社区来获取更多关于主备一键搭建的最佳实践和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值