mysql主從及遇到的問題解決
mysql主從及遇到問題解決
1.基于mysql 8.0的docker
2.配置mysql的配置
- 創(chuàng)建master文件夾,并創(chuàng)建my.cnf文件:
[mysqld] ## 設(shè)置server_id,注意要在同一局域網(wǎng)內(nèi)唯一 server-id=1 ## 開啟binlog log-bin=mysql-bin ## binlog格式(mixed、statement、row,默認(rèn)格式是statement) binlog_format=mixed
- 創(chuàng)建slaver文件夾,并創(chuàng)建my.cnf文件
[mysqld] ## 設(shè)置server_id,注意要唯一 server-id=2 ## 可以開啟binlog,以備Slave作為其它Slave的Master時(shí)使用 #log-bin=mysql-bin ## relay_log配置中繼日志 relay_log=relay-bin ## 如果需要同步函數(shù)或者存儲(chǔ)過程 log_bin_trust_function_creators=true ## binlog格式(mixed、statement、row,默認(rèn)格式是statement) binlog_format=mixed ## 跳過主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷 ## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫數(shù)據(jù)不一致 slave_skip_errors=1062 ## 跳過主從復(fù)制中遇到的錯(cuò)誤,可配可不配 read-only=1 #1只讀,0讀寫
- 同級(jí)可以創(chuàng)建sh文件
#!/bin/sh
# $0獲取執(zhí)行命令的文件;realpath獲取真實(shí)的路徑;dirname獲取該文件的絕對(duì)路徑
script_dir=$(dirname "$(realpath "$0")")
docker run -itd --name doyen$1 -p ${2}:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-v ${script_dir}/${1}/my.cnf:/etc/my.cnf \
-v ${script_dir}/${1}/data:/var/lib/mysql \
-v ${script_dir}/${1}/log:/var/log --restart always mysql:8.0- 分別執(zhí)行sh:
#啟用master容器,master文件名,3306端口 sh mysql.sh master 3306 #啟用slaver容器,slaver文件名,3307端口 sh mysql.sh master 3307
- 登錄master容器
#進(jìn)入容器,如果失敗使用 sh docker exec -it master bash #登錄mysql mysql -uroot -p123456 use mysql; #可以移除root的所有地區(qū)登錄,只保留能本機(jī)登錄 drop user 'root'@'%'; #創(chuàng)建slaver用戶,使用明文密碼連接 create user 'slaver'@'%' identified with mysql_native_password by '123456'; grant replication SLAVE ON *.* TO 'slaver'@'%'; flush privileges; #查看binlog的數(shù)據(jù),用于slaver的偏移量遷移 show master status;
- 登錄slaver服容器
#master_log_file和master_log_pos 為master中show展示的數(shù)據(jù)
change master to master_host='master-ip',
master_port=3306,
master_user='slaver',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=157;
start SLAVE;
show slave status\G;主從mysql完成,Slave_IO_Running 和 Slave_SQL_Running 都為 Yes。
遇到的問題說明
一些博客提示mysql的配置位置不對(duì),導(dǎo)致路徑映射不對(duì),使用默認(rèn)的配置,引發(fā)serverId都是1,會(huì)主從沖突,位置為 /etc/my.cnf,修改配置后需要docker restart。
查詢文件:
docker exec -it container find / -name "my.cnf"
如果slave的change連接master寫錯(cuò)了,可以執(zhí)行stop slave;reset slave;再重新綁定。
這是重頭開始復(fù)制,如果master已經(jīng)運(yùn)行了一段時(shí)間
#master容器:全量dump,--source-data=2表示生成的備份文件中包含 CHANGE MASTER TO 語句 #--single-transaction: 保證備份在一致性點(diǎn)上完成 #--flush-logs: 在備份開始時(shí)刷新 MySQL 的二進(jìn)制日志 #--hex-blob: 處理二進(jìn)制字段時(shí)使用十六進(jìn)制表示 mysqldump -u root -p --all-databases --source-data=2 --single-transaction --flush-logs --hex-blob > /var/lib/mysql/full-backup.sql #將master的該文件mv到slaver的映射路徑中,進(jìn)入slaver容器 mysql -u root -p < full-backup.sql #執(zhí)行完后再配置binlog同步點(diǎn),從sql文件中找出偏移量 CHANGE MASTER TO 。。。 #-------------------------------二。數(shù)據(jù)太多,只dump表結(jié)構(gòu)------- mysqldump -u root -p123456 --no-data --databases your_database > schema-only.sql mysql -u root -p123456 < schema-only.sql start slave;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql跨數(shù)據(jù)庫復(fù)制表(在同一IP地址中)示例
這篇文章主要介紹了mysql跨數(shù)據(jù)庫復(fù)制表(在同一IP地址中)示例,需要的朋友可以參考下2014-03-03
MySQL根據(jù) ID 將表 B 的字段更新到表 A的實(shí)戰(zhàn)教程
這篇文章主要介紹了MySQL根據(jù) ID 將表 B 的字段更新到表 A的實(shí)戰(zhàn)教程,本文將系統(tǒng)梳理幾種常見寫法,并分析它們的優(yōu)缺點(diǎn),需要的朋友可以參考下2026-04-04
mysql主鍵,外鍵,非空,唯一,默認(rèn)約束及創(chuàng)建表的方法
這篇文章主要介紹了mysql主鍵,外鍵,非空,唯一,默認(rèn)約束及創(chuàng)建表的方法,在數(shù)據(jù)庫中,數(shù)據(jù)表是數(shù)據(jù)庫中最重要、最基本的操作對(duì)象,是數(shù)據(jù)存儲(chǔ)的基本單位2022-07-07
MyBatis動(dòng)態(tài)SQL、模糊查詢與結(jié)果映射操作過程
本篇所講的動(dòng)態(tài)SQL,是mybatis通過標(biāo)簽元素的形式,?如if,?choose,?when,?otherwise,?trim,?where,?set,?foreach等標(biāo)簽完成對(duì)sql的拼接功能,使用起來也非常靈活方便,這篇文章主要介紹了MyBatis動(dòng)態(tài)SQL、模糊查詢與結(jié)果映射,需要的朋友可以參考下2023-08-08
MySQL如何根據(jù)不同條件聯(lián)查不同表的數(shù)據(jù)if/case
這篇文章主要介紹了MySQL如何根據(jù)不同條件聯(lián)查不同表的數(shù)據(jù)if/case問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Mysql 日期時(shí)間 DATE_FORMAT(date,format)
Mysql 日期時(shí)間 DATE_FORMAT(date,format) ,需要的朋友可以參考下。2010-12-12
MySQL查詢優(yōu)化的5個(gè)實(shí)用技巧
這篇文章主要介紹了MySQL查詢優(yōu)化的5個(gè)實(shí)用技巧,從數(shù)據(jù)類型、字符集、子查詢等角度分析了MySQL查詢優(yōu)化的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12

