最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql主從及遇到的問題解決

 更新時(shí)間:2025年01月04日 10:09:20   作者:與民更始  
本文詳細(xì)介紹了如何使用Docker配置MySQL主從復(fù)制,首先創(chuàng)建了兩個(gè)文件夾并分別配置了`my.cnf`文件,通過執(zhí)行腳本啟動(dòng)容器并配置好主從關(guān)系,文中還提到了一些常見問題的解決方法,如配置路徑錯(cuò)誤導(dǎo)致的沖突和slave的change連接錯(cuò)誤

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_RunningSlave_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)文章

最新評(píng)論

神池县| 常熟市| 昌都县| 汾阳市| 自治县| 南城县| 灵山县| 康马县| 三台县| 闽清县| 安图县| 宝鸡市| 十堰市| 年辖:市辖区| 烟台市| 芮城县| 丘北县| 常州市| 无极县| 神池县| 新田县| 西昌市| 四平市| 徐水县| 晋宁县| 荆门市| 安阳县| 东辽县| 黄梅县| 平度市| 镇雄县| 嫩江县| 清苑县| 鹰潭市| 浑源县| 和平县| 肇源县| 苏尼特右旗| 阜平县| 海门市| 虹口区|