mysql8.4.0實(shí)現(xiàn)主從復(fù)制部署
一、搭建主服務(wù)器master
1.1.docker-compose.yml文件編寫
version : '3.8' services: ai-platform-mysql-master: container_name: ai-platform-mysql-master image: mysql:8.4.0 ports: - "3306:3306" volumes: - ./mysql-master/conf:/etc/mysql/conf.d - ./mysql-master/logs:/logs - ./mysql-master/data:/var/lib/mysql - /etc/localtime:/etc/localtime:ro command: [ 'mysqld', '--innodb-buffer-pool-size=80M', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-time-zone=+8:00', '--lower-case-table-names=1' ] privileged: true environment: MYSQL_ROOT_PASSWORD: XXXXXXXXX改為root密碼 restart: always
1.2.創(chuàng)建MySQL主服務(wù)器配置文件
進(jìn)入主容器掛載目錄 - ./mysql-master/conf:/etc/mysql/conf.d
進(jìn)入conf 目錄 ,通過(guò)vim命令寫入到my.cnf即可
[mysqld] ## 設(shè)置server_id,同一局域網(wǎng)中需要唯一 server_id=101 ##指定不需要同步的數(shù)據(jù)庫(kù)每個(gè)in成 binlog_ignore_db=mysql binlog_ignore_db=information_schema binlog_ignore_db=performance_schema ## 開啟二進(jìn)制日志功能 log_bin=mall-mysql_bin ## 設(shè)置二進(jìn)制日志使用內(nèi)存大小(事務(wù)) binlog_cache_size=1M ## 設(shè)置使用的二進(jìn)制日志格式(mixed,statement,row) binlog_format=mixed slave_skip_errors=1062 ## 跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷。 ## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫(kù)數(shù)據(jù)不一
注意:binlog日志binlog格式說(shuō)明:
binlog_format=STATEMENT:日志記錄的是主機(jī)數(shù)據(jù)庫(kù)的寫指令,性能高,但是now()之類的函數(shù)以及獲取系統(tǒng)參數(shù)的操作會(huì)出現(xiàn)主從數(shù)據(jù)不同步的問(wèn)題。
binlog_format=ROW(默認(rèn)):日志記錄的是主機(jī)數(shù)據(jù)庫(kù)的寫后的數(shù)據(jù),批量操作時(shí)性能較差,解決now()或者 user()或者 @@hostname 等操作在主從機(jī)器上不一致的問(wèn)題。
binlog_format=MIXED:是以上兩種level的混合使用,有函數(shù)用ROW,沒(méi)函數(shù)用STATEMENT,但是無(wú)法識(shí)別系統(tǒng)變量
我們此處采用STATEMENT模式
(一般采用默認(rèn)的ROW格式)
1.3.啟動(dòng)容器
docker-compose up -d ai-platform-mysql-master
確認(rèn)服務(wù)是否啟動(dòng)
1.4.使用命令行登錄MySQL主服務(wù)器:
docker exec -it ai-platform-mysql-master /bin/bash
登錄mysql
mysql -uroot -p
輸入密碼
1.5.主機(jī)中創(chuàng)建slave用戶,并設(shè)置密碼和權(quán)限
CREATE USER 'slave'@'%';
設(shè)置密碼
ALTER USER 'slave'@'%' IDENTIFIED BY '密碼' ;
授予復(fù)制權(quán)限
GRANT Replication slave ON *.* TO 'slave'@'%'; flush privileges;
1.6.主機(jī)中查詢master狀態(tài):
SHOW BINARY LOG STATUS
記錄查詢的結(jié)果,保存,并且不要再操作主數(shù)據(jù)庫(kù)?。。。?/p>
自此,主服務(wù)器設(shè)置完成!
二、搭建從服務(wù)器
2.1.docker-compose.yml文件編寫
version : '3.8' services: ai-platform-mysql-slave: container_name: ai-platform-mysql-slave image: mysql:8.4.0 ports: - "3306:3306" volumes: - ./mysql-master/conf:/etc/mysql/conf.d - ./mysql-master/logs:/logs - ./mysql-master/data:/var/lib/mysql - /etc/localtime:/etc/localtime:ro command: [ 'mysqld', '--innodb-buffer-pool-size=80M', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-time-zone=+8:00', '--lower-case-table-names=1' ] privileged: true environment: MYSQL_ROOT_PASSWORD: XXXXXXXXX改為root密碼 restart: always
2.2.創(chuàng)建MySQL從服務(wù)器配置文件
進(jìn)入主容器掛載目錄 - ./mysql-master/conf:/etc/mysql/conf.d
進(jìn)入conf 目錄 ,通過(guò)vim命令寫入到my.cnf即可
[mysqld] # 服務(wù)器唯一id,每臺(tái)服務(wù)器的id必須不同,如果配置其他從機(jī),注意修改id server-id=103 # 中繼日志名,默認(rèn)xxxxxxxxxxxx-relay-bin #relay-log=relay-bin
2.3.啟動(dòng)容器
docker-compose up -d ai-platform-mysql-slave
確認(rèn)服務(wù)是否啟動(dòng)
2.4.使用命令行登錄MySQL從服務(wù)器:
docker exec -it ai-platform-mysql-slave/bin/bash
登錄mysql
mysql -uroot -p
輸入密碼
2.5.配置 MySQL 主從復(fù)制
為了保持?jǐn)?shù)據(jù)一致性,建議在主服務(wù)器在執(zhí)行一遍SHOW BINARY LOG STATUS 并記錄 File 和Position的值
CHANGE REPLICATION SOURCE TO SOURCE_HOST='ip', SOURCE_USER='slave', SOURCE_PASSWORD='密碼', SOURCE_PORT=3306, SOURCE_LOG_FILE='File', SOURCE_LOG_POS=Position, SOURCE_SSL=1;
開啟同步,執(zhí)行語(yǔ)句
START REPLICA;
如果報(bào)錯(cuò):
ERROR 1872 (HY000): Replica failed to initialize applier metadata structure from the repository
因?yàn)閺臄?shù)據(jù)庫(kù)可能以前配置過(guò),生成過(guò) 中繼日志文件,導(dǎo)致 從數(shù)據(jù)庫(kù) slave 中還記錄著舊數(shù)據(jù),這時(shí)可以使用 命令
RESET REPLICA; 重新設(shè)置即可。
查看復(fù)制狀態(tài),狀態(tài)為yes 即可,
SHOW REPLICA STATUS
接下來(lái)自己測(cè)試即可,主數(shù)據(jù)庫(kù)創(chuàng)建庫(kù)、表 新增數(shù)據(jù) 啥的?。?/p>
到此這篇關(guān)于mysql8.4.0實(shí)現(xiàn)主從復(fù)制部署的文章就介紹到這了,更多相關(guān)mysql8.4.0 主從復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker部署mysql和nginx服務(wù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了docker部署mysql和nginx服務(wù)的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04docker形式簡(jiǎn)易部署kibana的過(guò)程
這篇文章給大家介紹使用docker部署kibana服務(wù)的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11Docker學(xué)習(xí)之Container容器的具體使用
這篇文章主要介紹了Docker學(xué)習(xí)之Container容器的具體使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Dockerfile中multi-stage(多階段構(gòu)建)詳解
在2017年5月3日即將發(fā)行的 Docker 17.05.0-ce 中,Docker 官方提供了簡(jiǎn)便的多階段構(gòu)建 (multi-stage build) 方案,下面這篇文章主要給大家介紹了關(guān)于Dockerfile中multi-stage(多階段構(gòu)建)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03Jenkins構(gòu)建Docker鏡像并推送至Harbor倉(cāng)庫(kù)的實(shí)現(xiàn)
本文主要介紹了Jenkins構(gòu)建Docker鏡像并推送至Harbor倉(cāng)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09