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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

数据库

mysql多源复制脚本_Mysql多源复制

發(fā)布時(shí)間:2025/3/21 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql多源复制脚本_Mysql多源复制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、概述

以下是多源復(fù)制的架構(gòu)圖(來(lái)自2015 OOW的ppt)

本文檔實(shí)驗(yàn)的架構(gòu)圖:

2、所需軟件

3、MySQL軟件的安裝(在四臺(tái)服務(wù)器上都裝上MySQL5.7.9數(shù)據(jù)庫(kù)軟件)

3.1、查詢(xún)服務(wù)器上是否已經(jīng)安裝mysql

[root@master ~]#rpm -aq | grep mysql

mysql-server-5.1.66-2.el6_3.x86_64

mysql-libs-5.1.66-2.el6_3.x86_64

mysql-devel-5.1.66-2.el6_3.x86_64

qt-mysql-4.6.2-25.el6.x86_64

mysql-5.1.66-2.el6_3.x86_64

3.2、先卸載舊的版本

rpm -e mysql --nodeps --allmatches (不理會(huì)依賴(lài)關(guān)系,刪除所有上一步查出來(lái)的mysql)

[root@master ~]#rpm -e mysql-server-5.1.66-2.el6_3.x86_64 --nodeps --allmatches

[root@master ~]#rpm -e mysql-libs-5.1.66-2.el6_3.x86_64?--nodeps --allmatches

[root@master ~]#rpm -e mysql-devel-5.1.66-2.el6_3.x86_64?--nodeps --allmatches

[root@master ~]#rpm -e qt-mysql-4.6.2-25.el6.x86_64?--nodeps --allmatches

[root@master ~]#rpm -e mysql --nodeps --allmatches

[root@master ~]#rpm -aq | grep mysql

3.3、安裝軟件

rpm -ivfmysql-community-libs-compat-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-libs-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-common-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-client-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-embedded-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-embedded-devel-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-server-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-devel-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-libs-5.7.9-1.el6.x86_64.rpm

rpm -ivfmysql-community-test-5.7.9-1.el6.x86_64.rpm

3.4、MySQL 5.7.9修改密碼

service mysqldstart

查看密碼

sudo grep'temporary password' /var/log/mysqld.log

進(jìn)入mysql,修改密碼

setpassword=password(‘Apexapex@123’);

3.5、開(kāi)啟mysql的3306端口號(hào),給root用戶(hù)授權(quán),用于遠(yuǎn)程訪問(wèn)

3.5.1、開(kāi)啟mysql端口號(hào)及關(guān)閉Selinux

/sbin/iptables-I INPUT -p tcp --dport 3306 -j ACCEPT

/sbin/iptables-I INPUT -p udp --dport 3306 -j ACCEPT

/etc/rc.d/init.d/iptablessave

/etc/rc.d/init.d/iptablesrestart

關(guān)閉Selinux

sed -i'/SELINUX/s/enforcing/disabled/' /etc/selinux/config

3.5.2、給root用戶(hù)授權(quán),使遠(yuǎn)程客戶(hù)端才能夠連接過(guò)來(lái)

GRANT ALLPRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Apexapex@123' WITH GRANT OPTION;

4、主備復(fù)制配置步驟如下(master與slave配置)

4.1、修改主服務(wù)器的配置文件

vi /etc/my.cnf

在[mysqld]下添加以下內(nèi)容

log_bin=/var/lib/mysql/mysql-bin

server-id = 67

gtid_mode=ON

enforce_gtid_consistency=ON

4.2、修改備服務(wù)器slave

vi /etc/my.cnf

在[mysqld]下添加以下內(nèi)容

log_bin=/var/lib/mysql/mysql-bin

server-id = 68

master_info_repository=TABLE

relay_log_info_repository=TABLE

gtid_mode=ON

enforce_gtid_consistency=ON

4.3、重啟兩臺(tái)服務(wù)器的mysql

/etc/init.d/mysqlrestart

4.4、在主服務(wù)器上建立帳戶(hù)并授權(quán)slave

# mysql -u root-p

Enter password:

GRANTREPLICATION SLAVE ON *.* TO apexsoft@'%' IDENTIFIED BY 'Apexapex@123';

GRANT REPLICATIONSLAVE ON *.* TO rep@'%' IDENTIFIED BY 'Apexapex@123';

flushprivileges;

4.5、配置備服務(wù)器slave

CHANGE MASTER TOMASTER_HOST = '192.168.1.67', MASTER_PORT = 3306,MASTER_USER = 'apexsoft',MASTER_PASSWORD = 'Apexapex@123',MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master1';

啟動(dòng)備服務(wù)器復(fù)制功能

mysql>start slave;

4.6、檢查備服務(wù)器復(fù)制功能狀態(tài)

mysql> show slavestatus\G;

注:Standby_IO及Standby_SQL進(jìn)程必須正常運(yùn)行,即YES狀態(tài),否則都是錯(cuò)誤的狀態(tài)(如:其中一個(gè)NO均屬錯(cuò)誤)。

以上操作過(guò)程,主備服務(wù)器配置完成。

4.7、主備服務(wù)器測(cè)試

主服務(wù)器Mysql,建立數(shù)據(jù)庫(kù),并在這個(gè)庫(kù)中建表插入一條數(shù)據(jù):mysql> create database apex_db;

Query OK, 1 rowaffected (0.00 sec)

mysql> useapex_db;

Database changed

mysql>?create table apex_tb(id int(3),name char(10));

Query OK, 0 rowsaffected (0.00 sec)

mysql> insertinto apex_tb values(001,' apex ');

Query OK, 1 rowaffected (0.00 sec)

mysql> showdatabases;

+--------------------+

|Database?????????? |

+--------------------+

|information_schema |

|apex_db????????????|

| mysql?????????????|

|test??????????????|

+--------------------+

4rows in set (0.00 sec)

備服務(wù)器Mysql查詢(xún):

mysql> show databases;

+--------------------+

|Database?????????? |

+--------------------+

|information_schema |

| apex_db?????????????|

|mysql?????????????|

|test??????????????|

+--------------------+

4rows in set (0.00 sec)

mysql> use apex_db

Database changed

mysql> select* from apex_tb;??? //可以看到在主服務(wù)器上新增的具體數(shù)據(jù)

+------+------+

|id?? | name |

+------+------+

|??? 1 | apex |

+------+------+

1row in set (0.00 sec)

5、節(jié)點(diǎn)master1配置

5.1、修改主服務(wù)器master1

vi /etc/my.cnf

在[mysqld]下添加以下內(nèi)容

log_bin=/var/lib/mysql/mysql-bin

server-id = 66

port=3306

gtid_mode=ON

enforce_gtid_consistency=ON

5.2、在主服務(wù)器上建立帳戶(hù)并授權(quán)給multiple

# mysql -u root-p

Enter password:

mysql> GRANTREPLICATION STANDBY ON *.* TO apexsoft1@'%' IDENTIFIED BY '123456';

mysql>flushprivileges;

6、節(jié)點(diǎn)multiple(多源復(fù)制到的節(jié)點(diǎn))配置

6.1、修改multiple的配置文件

vi /etc/my.cnf

在[mysqld]下添加以下內(nèi)容

log_bin=/var/lib/mysql/mysql-bin

server-id = 69

master_info_repository=TABLE

relay_log_info_repository=TABLE

gtid_mode=ON

enforce_gtid_consistency=ON

6.2、配置multiple服務(wù)器

CHANGE MASTER TOMASTER_HOST = '192.168.1.66', MASTER_PORT = 3306,MASTER_USER = 'apexsoft1',MASTER_PASSWORD = 'Apexapex@123',MASTER_AUTO_POSITION = 1 FOR CHANNEL'master1';

CHANGE MASTER TOMASTER_HOST = '192.168.1.67', MASTER_PORT = 3306,MASTER_USER = 'rep',MASTER_PASSWORD = 'Apexapex@123',MASTER_AUTO_POSITION = 1 FOR CHANNEL'master2';

start slave forchannel ‘master1’;

start slave forchannel ‘master2’;

show slavestatus\G;

7、關(guān)于多源復(fù)制常見(jiàn)問(wèn)題

7.1、主鍵沖突解決方法

7.1.1、方法一:在multiple上取消唯一性約束、主鍵約束

可能產(chǎn)生的后果是,在multiple上進(jìn)行查詢(xún)時(shí),不走主鍵的索引,查詢(xún)效率變慢。

7.1.2、方法二:在master與master1上對(duì)同一庫(kù)或同一表上分別取不同的名字

7.2、增加標(biāo)志位來(lái)顯示屬于哪個(gè)庫(kù)同步過(guò)來(lái)的

方法一:在建表時(shí),直接增加一列來(lái)標(biāo)識(shí)屬于哪臺(tái)數(shù)據(jù)庫(kù)。

方法二:在master與master1上對(duì)同一庫(kù)或同一表上分別取不同的名字,同步到multiple后,通過(guò)建立視圖增加一列來(lái)標(biāo)識(shí)屬于哪一個(gè)庫(kù)。如 t2表與t3表:

create viewTview as select id,name, 't2' as 'SIGN' from t2 union select id,name, 't3' as'SIGN' from t3;

7.3、過(guò)濾功能

在單臺(tái)的情況(沒(méi)有主從的情況),可以在該臺(tái)數(shù)據(jù)庫(kù)上使用過(guò)濾條件;

在主從架構(gòu)的情況,如果在主庫(kù)使用過(guò)濾條件,也會(huì)把備庫(kù)進(jìn)行過(guò)濾的,所以不能在主庫(kù)使用過(guò)濾??梢钥紤]以下兩種方法:

方法一:

可以在備庫(kù)上使用過(guò)濾條件,然后讓備庫(kù)把數(shù)據(jù)同步到multiple上。整個(gè)架構(gòu)就變成這樣了。

方法二:

在mutilple數(shù)據(jù)庫(kù)上使用過(guò)濾條件,這種情況的過(guò)濾實(shí)質(zhì)是這樣的。每個(gè)源庫(kù)都有把數(shù)據(jù)傳到mutiple數(shù)據(jù)庫(kù),存儲(chǔ)為中繼日志,只是在mutiple端沒(méi)有使用sql thread去解析,執(zhí)行這些語(yǔ)句而已,還是占用了網(wǎng)絡(luò)帶寬,影響源庫(kù)的性能。

7.4、多源到底能支持多少個(gè)源呢

本文轉(zhuǎn)自 corasql 51CTO博客,原文鏈接:http://blog.51cto.com/corasql/1709483,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的mysql多源复制脚本_Mysql多源复制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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