Docker部署Mysql8.0.20并配置主從復(fù)制的實(shí)現(xiàn)步驟
1. Linux安裝Mysql8.0.20并配置主從復(fù)制(一主一從,雙主雙從)
Linux安裝Mysql8.0.20并配置主從復(fù)制(一主一從,雙主雙從)
2. 前提準(zhǔn)備
# 創(chuàng)建主從數(shù)據(jù)庫(kù)文件夾 mkdir -p /usr/local/mysql/master1/conf mkdir -p /usr/local/mysql/master1/data mkdir -p /usr/local/mysql/slave1/conf mkdir -p /usr/local/mysql/slave1/data # 初始化主數(shù)據(jù)庫(kù)配置文件 cd /usr/local/mysql/master1/conf touch my.cnf vi my.cnf # 粘貼以下內(nèi)容 [mysqld] datadir = /usr/local/mysql/master1/data character-set-server = utf8 lower-case-table-names = 1 # 主從復(fù)制-主機(jī)配置 # 主服務(wù)器唯一ID server-id = 1 # 啟用二進(jìn)制日志 log-bin=mysql-bin # 設(shè)置logbin格式 binlog_format = STATEMENT # 初始化從數(shù)據(jù)庫(kù)配置文件 cd /usr/local/mysql/slave1/conf touch my.cnf vi my.cnf # 粘貼以下內(nèi)容 [mysqld] datadir = /usr/local/mysql/slave1/data character-set-server = utf8 lower-case-table-names = 1 # 主從復(fù)制-從機(jī)配置 # 從服務(wù)器唯一ID server-id = 2 # 啟用中繼日志 relay-log = mysql-relay # 文件夾授權(quán) chmod -R 777 /usr/local/mysql
3. Docker部署Mysql8.0.20
# 拉取鏡像 docker pull mysql:8.0.20 # 查看鏡像 docker images # 構(gòu)建主數(shù)據(jù)庫(kù)容器 docker run --name=mysql-master-1 --privileged=true -p 3306:3306 -v /usr/local/mysql/master1/data/:/var/lib/mysql -v /usr/local/mysql/master1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/master1/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1 # 查詢是否啟動(dòng)成功 docker ps # 驗(yàn)證是否可以登錄 # 交互式進(jìn)入容器 docker exec -it mysql-master-1 /bin/bash # 登錄(使用構(gòu)建時(shí)指定的密碼:3edc#EDC) mysql -uroot -p # 退出 quit exit # 構(gòu)建從數(shù)據(jù)庫(kù)容器 docker run --name=mysql-slave-1 --privileged=true -p 3307:3306 -v /usr/local/mysql/slave1/data/:/var/lib/mysql -v /usr/local/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slave1/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1 # 查詢是否啟動(dòng)成功 docker ps # 驗(yàn)證是否可以登錄 # 交互式進(jìn)入容器 docker exec -it mysql-slave-1 /bin/bash # 登錄(使用構(gòu)建時(shí)指定的密碼:3edc#EDC) mysql -uroot -p # 退出 quit exit # 關(guān)閉防火墻 # 查看防火墻狀態(tài) systemctl status firewalld # 關(guān)閉防火墻 systemctl stop firewalld
4. 配置主從復(fù)制
# 進(jìn)入主數(shù)據(jù)庫(kù) mysql -uroot -p -h192.168.10.234 -P3306 - 主數(shù)據(jù)庫(kù)創(chuàng)建用戶slave并授權(quán) # 創(chuàng)建用戶 create user 'slave'@'%' identified with mysql_native_password by 'password'; # 授權(quán) grant replication slave on *.* to 'slave'@'%'; # 刷新權(quán)限 flush privileges; # 查詢server_id值 show variables like 'server_id'; # 也可臨時(shí)(重啟后失效)指定server_id的值(主從數(shù)據(jù)庫(kù)的server_id不能相同) set global server_id = 1; # 查詢Master狀態(tài),并記錄File和Position的值 show master status; # 注意:執(zhí)行完此步驟后退出主數(shù)據(jù)庫(kù),防止再次操作導(dǎo)致File和Position的值發(fā)生變化 # 驗(yàn)證slave用戶是否可用 mysql -uslave -p -h192.168.10.234 -P3306 # 進(jìn)入從數(shù)據(jù)庫(kù) mysql -uroot -p -h192.168.10.234 -P3307 # 查詢server_id值 show variables like 'server_id'; # 也可臨時(shí)(重啟后失效)指定server_id的值(主從數(shù)據(jù)庫(kù)的server_id不能相同) set global server_id = 2; # 若之前設(shè)置過(guò)同步,請(qǐng)先重置 stop slave; reset slave; # 設(shè)置主數(shù)據(jù)庫(kù) change master to master_host='192.168.10.234',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156; # 開(kāi)始同步 start slave; # 若出現(xiàn)錯(cuò)誤,則停止同步,重置后再次啟動(dòng) stop slave; reset slave; start slave; # 查詢Slave狀態(tài) show slave status\G # 查看是否配置成功 # 查看參數(shù) Slave_IO_Running 和 Slave_SQL_Running 是否都為yes,則證明配置成功。若為no,則需要查看對(duì)應(yīng)的 Last_IO_Error 或 Last_SQL_Error 的異常值。
5. 測(cè)試
通過(guò)工具連接主從數(shù)據(jù)庫(kù)或者在服務(wù)器連接。
# 在主數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)test create database test; # 從數(shù)據(jù)庫(kù)查看 show databases; # 在主數(shù)據(jù)庫(kù)創(chuàng)建表 use test; create table t_user(id int, name varchar(20)); # 插入數(shù)據(jù) insert into t_user values(1, 'C3Stones'); # 在從數(shù)據(jù)庫(kù)查看 use test; select * from t_user; # 其他刪改查操作請(qǐng)自行測(cè)試
到此這篇關(guān)于Docker部署Mysql8.0.20并配置主從復(fù)制的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker部署Mysql主從復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose網(wǎng)絡(luò)配置-?IP?主機(jī)名?hosts配置方式
這篇文章主要介紹了docker-compose網(wǎng)絡(luò)配置-?IP?主機(jī)名?hosts配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01如何在docker中運(yùn)行springboot項(xiàng)目過(guò)程圖解
這篇文章主要介紹了如何在docker中運(yùn)行springboot項(xiàng)目過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題
這篇文章主要介紹了docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01解決Docker鏡像拉取超時(shí)及優(yōu)化網(wǎng)絡(luò)配置的方法(failed to do request
在使用 Docker 構(gòu)建和部署應(yīng)用時(shí),拉取鏡像是一個(gè)關(guān)鍵的步驟,然而,在一些網(wǎng)絡(luò)環(huán)境中,特別是企業(yè)內(nèi)部網(wǎng)或受限網(wǎng)絡(luò)環(huán)境中,可能會(huì)遇到 Docker 鏡像拉取失敗或超時(shí)的問(wèn)題,這篇博客將詳細(xì)探討如何應(yīng)對(duì) Docker 鏡像拉取超時(shí)的問(wèn)題,需要的朋友可以參考下2024-11-11關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決
最近工作中遇到一個(gè)問(wèn)題,項(xiàng)目?jī)?nèi)部需要訪問(wèn)外網(wǎng),但上傳文件,但是一直報(bào)unknown host,無(wú)法解析域名,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07