日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

使用docker部署mysql主从复制集群

發(fā)布時(shí)間:2023/12/20 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用docker部署mysql主从复制集群 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、環(huán)境搭建

虛擬機(jī)環(huán)境:centos7 IP:192.168.37.134 用戶名:root 密碼:123

啟動(dòng)3個(gè)容器,一個(gè)是master,端口是3307,另外兩個(gè)是slaver,端口是3308和3309

docker pull mysql:5.7docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3308:3306 --name mysql-slaver1 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3309:3306 --name mysql-slaver2 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

?

?二、配置mysql-master

進(jìn)入mysql-master容器,修改/etc/mysql/my.cnf,添加

[mysqld] server-id=3307 ##自定義id號(hào),不要重 log-bin=mysql-bin ##開(kāi)啟二進(jìn)制日志

?

?注意:在使用vim時(shí),可能會(huì)出現(xiàn)not found,需要apt-get install vim

修改好my.cnf后,需要重啟一下mysql,重啟一下mysql-master容器,重新進(jìn)入容器

service mysql restart
docker start mysql-master
docker exec -it mysql-master /bin/bash

?進(jìn)入容器后,登錄mysql,為slaver分配一個(gè)賬號(hào)

CREATE USER 'slave'@'%' IDENTIFIED BY '123abc'; ##用戶名是slave,密碼是123abc GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; ##指定訪問(wèn)權(quán)限

查看當(dāng)前主機(jī)狀態(tài),注意:查看完?duì)顟B(tài)后就不要再進(jìn)行其他的操作了,slaver會(huì)引用mster的Position編碼,每次操作Position都會(huì)變。

到這里,master就配置完成了,等待slaver的連接。

?三、配置mysql-slaver

以mysql-slaver1為例

進(jìn)入容器和配置master一樣

修改/etc/mysql/my.cnf文件,添加

[mysqld] server-id=3308 ##id號(hào),自定義,不要重就行 log-bin=mysql-slave-bin ##開(kāi)啟二進(jìn)制日志功能 relay_log=edu-mysql-relay-bin ##配置中繼日志

然后是重啟mysql,重啟容器,重新進(jìn)入容器,登錄mysql進(jìn)行下一步配置

service mysql restart docker start mysql-slaver1 docker exec -it mysql-slaver2 /bin/bash mysql -u root -p

?執(zhí)行命令進(jìn)行master的連接,需要配置master的ip,用戶名,密碼,日志文件和當(dāng)前版本號(hào)

change master to master_host='192.168.37.134', master_user='slave', master_password='abc123', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos= 789, master_connect_retry=30;

查看連接狀態(tài)

show slave status \G;

可以看到當(dāng)前狀態(tài)是未開(kāi)啟主從復(fù)制,接下來(lái)開(kāi)啟,再查看狀態(tài)

start slave;
show slave status \G;

當(dāng)看到這個(gè)的時(shí)候,說(shuō)明我們的配置出現(xiàn)了問(wèn)題,原因是密碼寫錯(cuò)了,出現(xiàn)這種情況一般就是在連接配置的時(shí)候出現(xiàn)了問(wèn)題。現(xiàn)在改回來(lái)重新執(zhí)行如下代碼

stop slave; #修改之前需要先stop一下
change master to master_host='192.168.37.134', master_user='slave', master_password='123abc', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos= 789, master_connect_retry=30;
start slave;
show dlave status \G;

當(dāng)看到兩個(gè)Yes的時(shí)候,說(shuō)明slave配置成功了,并且已經(jīng)開(kāi)啟了主從復(fù)制。

mysql-slaver2配置相同。

四、測(cè)試

mysql-master上創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),創(chuàng)建表,插入數(shù)據(jù)

create database test charset utf8; use test; create table user(id int(11),name varchar(255))charset utf8; insert into user(id,name) values(100,'tom'),(101,'jerry');

在其中一臺(tái)mysql-slaver1上查看數(shù)據(jù)

五、說(shuō)明一下

1. mysql是按/etc/my.cnf

-> /etc/mysql/my.cnf

-> /usr/local/mysql/etc/my.cnf

-> ~/.my.cnf的順序讀取配置文件的。

如果幾個(gè)配置文件中都有相同的參數(shù),mysql會(huì)以讀取的最后一個(gè)文件配置參數(shù)為準(zhǔn)。

2. 集群結(jié)構(gòu)

當(dāng)前的結(jié)構(gòu)是slaver1和slaver2作為master的從機(jī),需要在slaver1和slaver2上配置master的相關(guān)信息。

也可以使用串行結(jié)構(gòu)

只不過(guò)是slaver2把slaver1認(rèn)為是master,配置的是slaver1的相關(guān)信息

?

在spring項(xiàng)目中,可以配置兩個(gè)數(shù)據(jù)源,一個(gè)讀,一個(gè)寫。然后DAO層的類分別注入不同的數(shù)據(jù)源,產(chǎn)生讀的bean和寫的bean,service調(diào)用的時(shí)候注入指定的bean就可以啦。

?

轉(zhuǎn)載于:https://www.cnblogs.com/wwzyy/p/11060400.html

總結(jié)

以上是生活随笔為你收集整理的使用docker部署mysql主从复制集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。