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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/20 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用docker部署mysql主从复制集群 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、環境搭建

虛擬機環境:centos7 IP:192.168.37.134 用戶名:root 密碼:123

啟動3個容器,一個是master,端口是3307,另外兩個是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

進入mysql-master容器,修改/etc/mysql/my.cnf,添加

[mysqld] server-id=3307 ##自定義id號,不要重 log-bin=mysql-bin ##開啟二進制日志

?

?注意:在使用vim時,可能會出現not found,需要apt-get install vim

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

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

?進入容器后,登錄mysql,為slaver分配一個賬號

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

查看當前主機狀態,注意:查看完狀態后就不要再進行其他的操作了,slaver會引用mster的Position編碼,每次操作Position都會變。

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

?三、配置mysql-slaver

以mysql-slaver1為例

進入容器和配置master一樣

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

[mysqld] server-id=3308 ##id號,自定義,不要重就行 log-bin=mysql-slave-bin ##開啟二進制日志功能 relay_log=edu-mysql-relay-bin ##配置中繼日志

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

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

?執行命令進行master的連接,需要配置master的ip,用戶名,密碼,日志文件和當前版本號

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;

查看連接狀態

show slave status \G;

可以看到當前狀態是未開啟主從復制,接下來開啟,再查看狀態

start slave;
show slave status \G;

當看到這個的時候,說明我們的配置出現了問題,原因是密碼寫錯了,出現這種情況一般就是在連接配置的時候出現了問題。現在改回來重新執行如下代碼

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;

當看到兩個Yes的時候,說明slave配置成功了,并且已經開啟了主從復制。

mysql-slaver2配置相同。

四、測試

mysql-master上創建一個數據庫,創建表,插入數據

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');

在其中一臺mysql-slaver1上查看數據

五、說明一下

1. mysql是按/etc/my.cnf

-> /etc/mysql/my.cnf

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

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

如果幾個配置文件中都有相同的參數,mysql會以讀取的最后一個文件配置參數為準。

2. 集群結構

當前的結構是slaver1和slaver2作為master的從機,需要在slaver1和slaver2上配置master的相關信息。

也可以使用串行結構

只不過是slaver2把slaver1認為是master,配置的是slaver1的相關信息

?

在spring項目中,可以配置兩個數據源,一個讀,一個寫。然后DAO層的類分別注入不同的數據源,產生讀的bean和寫的bean,service調用的時候注入指定的bean就可以啦。

?

轉載于:https://www.cnblogs.com/wwzyy/p/11060400.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。