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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 互为主备 宕机 数据丢失_Devops部署-mysql主备多从搭建

發(fā)布時間:2023/12/15 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 互为主备 宕机 数据丢失_Devops部署-mysql主备多从搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?雙主多從架構(gòu)原理介紹

IP端口賬號密碼服務(wù)名
10.1.1.23306root/syncabc123!數(shù)據(jù)庫A
10.1.1.33306root/syncabc123!數(shù)據(jù)庫B
10.1.1.43306root/syncabc123!數(shù)據(jù)庫C

1.兩臺mysql都可讀寫,互為主備,默認(rèn)只使用一臺(masterA)負(fù)責(zé)數(shù)據(jù)的寫入,另一臺(masterB)備用;

2.masterA是masterB的主庫,masterB又是masterA的主庫,它們互為主從;

3.兩臺主庫之間做高可用,可以采用MyCAT中間件暴露一個統(tǒng)一的服務(wù)給client,同時當(dāng)2主任意一臺宕機(jī)時,還能提供服務(wù)。宕掉的機(jī)器重啟恢復(fù)之后,數(shù)據(jù)可以同步得到;

4.所有提供服務(wù)的從服務(wù)器與masterB進(jìn)行主從同步(雙主多從);

#創(chuàng)建目錄 mkdir -p /home/docker-compose/mysql cd /home/docker-compose/mysql/ && mkdir data conf vi docker-compose.yml

version: '3.1' services:mysql:restart: alwaysimage: mysql:5.7container_name: mysqlports:- 3306:3306environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: abc123! ##密碼command:--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1--max_allowed_packet=128M--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"volumes:- ./data:/var/lib/mysql- ./conf:/etc/mysql/mysql.conf.d

進(jìn)入目錄

cd /home/docker-compose/mysql/conf

編寫MySQL配置文件

vi mysqld.cnf

主節(jié)點1配置

[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql default-time-zone='+8:00' symbolic-links=0 server-id = 40 log-bin = mysql-bin enforce_gtid_consistency = ON gtid_mode = ON auto_increment_increment=1 auto_increment_offset=1 log-slave-updates sync_binlog=1 max_connections=1000 innodb_file_per_table=1 innodb_file_format=Barracuda innodb_page_size=32K innodb_log_file_size=148M

主節(jié)點2配置

[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql default-time-zone='+8:00' symbolic-links=0 server-id = 66 log-bin = mysql-bin enforce_gtid_consistency = ON gtid_mode = ON auto_increment_increment=2 auto_increment_offset=2 log-slave-updates sync_binlog=1 max_connections=1000 innodb_file_per_table=1 innodb_file_format=Barracuda innodb_page_size=32K innodb_log_file_size=148

啟動mysql

docker-compose up -d docker-compose down //直接刪除容器 docker-compose stop //不刪除容器 docker-compose start //直接啟動

進(jìn)入容器:

docker exec -it mysql /bin/bash mysql -uroot -pabc123!

設(shè)置2個主節(jié)點的主從關(guān)系

查看10.1.1.2的日志信息:

File: mysql-bin.000005

Position: 1495

mysql> show master status G; *************************** 1. row ***************************File: mysql-bin.000005Position: 1495Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: c83eb7e9-2556-11eb-b4ad-0242ac120002:20-21, d52d0074-2556-11eb-93b5-0242ac120002:1-20 1 row in set (0.00 sec)ERROR: No query specifiedmysql>

查看10.1.1.3的日志信息:

File: mysql-bin.000004

Position: 1796

mysql> show master status G; *************************** 1. row ***************************File: mysql-bin.000004Position: 1796Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: c83eb7e9-2556-11eb-b4ad-0242ac120002:1-21, d52d0074-2556-11eb-93b5-0242ac120002:20 1 row in set (0.00 sec)ERROR: No query specifiedmysql>

在兩個節(jié)點執(zhí)行

create user 'sync'@'%' identified by 'password'; grant replication slave on *.* to sync;##Mysql復(fù)制錯誤error_code: 1045 Access denied for usergrant replication slave on *.* to 'sync'@'%' identified by 'password';flush privileges; //刷新MySQL的系統(tǒng)權(quán)限相關(guān)表,否則會無法用賬號鏈接

修改master_host與master_log_file與master_log_pos三個值

#節(jié)點設(shè)置 需要同步的節(jié)點(主庫節(jié)點)

#在10.1.1.2設(shè)置

FLUSH TABLES WITH READ LOCK; change master to master_host='10.1.1.3',master_port=3306,master_user='sync',master_password='password',master_log_file='mysql-bin.000004',master_log_pos=1796; UNLOCK TABLES;

#在10.1.1.3設(shè)置

FLUSH TABLES WITH READ LOCK; change master to master_host='10.1.1.2',master_port=3306,master_user='sync',master_password='password',master_log_file='mysql-bin.000005',master_log_pos=1495; UNLOCK TABLES;

開啟主從復(fù)制 :

start slave;

檢查

mysql> show slave status G; *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 10.1.1.3Master_User: syncMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000004Read_Master_Log_Pos: 1796Relay_Log_File: a389ed970e74-relay-bin.000005Relay_Log_Pos: 822Relay_Master_Log_File: mysql-bin.000004Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table:

以下三項為正常

Slave_IO_State: Waiting for master to send event

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


未完待續(xù)

總結(jié)

以上是生活随笔為你收集整理的mysql 互为主备 宕机 数据丢失_Devops部署-mysql主备多从搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。