搭建mysql一主一备

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 搭建mysql一主一备,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、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的一主一备环境搭建完毕!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142652.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!