MySQL9.1.0實(shí)現(xiàn)GTID模式的項(xiàng)目實(shí)踐
本章節(jié)實(shí)現(xiàn)MySQL主從復(fù)制GTID模式
主機(jī) | IP地址 | 端口 |
---|---|---|
mysql-master | 192.168.239.100 | 3306 |
mysql-slave1 | 192.168.239.110 | 3306 |
mysql-slave2 | 192.168.239.120 | 3306 |
1 實(shí)驗(yàn)準(zhǔn)備工作
1.1 下載并安裝官方MySQL的rpm包
[root@master mysql_rpm]# yum localinstall mysql-community-server-9.1.0-1.el7.x86_64.rpm \ mysql-community-common-9.1.0-1.el7.x86_64.rpm \ mysql-community-client-9.1.0-1.el7.x86_64.rpm \ mysql-community-icu-data-files-9.1.0-1.el7.x86_64.rpm \ mysql-community-libs-9.1.0-1.el7.x86_64.rpm \ mysql-community-client-plugins-9.1.0-1.el7.x86_64.rpm
1.2 設(shè)置DNS解析
[root@master ~]# cat >> /etc/hosts <<EOF > 192.168.239.100 master > 192.168.239.110 slave1 > 192.168.239.120 slave2 > EOF ? [root@slave1 ~]# cat >> /etc/hosts <<EOF > 192.168.239.100 master > 192.168.239.110 slave1 > 192.168.239.120 slave2 > EOF ? [root@slave2 ~]# cat >> /etc/hosts <<EOF > 192.168.239.100 master > 192.168.239.110 slave1 > 192.168.239.120 slave2 > EOF
1.3 修改密碼
MASTER SLAVE1 SLAVE2 均是以下這樣設(shè)置
# 改變密碼策略 [root@master ~]# cat >> /etc/my.cnf <<EOF validate_password.policy=LOW validate_password.length=0 EOF ? # 啟動MySQL服務(wù) [root@master ~]# systemctl start mysqld [root@master ~]# grep password /var/log/mysqld.log 2024-12-14T14:29:20.406601Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: (:lt/hLIW4da [root@master ~]# mysql -uroot -p'(:lt/hLIW4da' ? # 修改數(shù)據(jù)庫密碼 mysql> alter user 'root'@'localhost' identified by '123456'; mysql> flush privileges;
2 GTID模式實(shí)現(xiàn)主從復(fù)制
2.1 增加配置文件內(nèi)容
[root@master ~]# cat >> /etc/my.cnf <<EOF log_bin=mysql-bin symbolic-links=0 # 禁用符號鏈接 server_id=10 # 設(shè)置serverID 為機(jī)器的標(biāo)識符 ? log_bin=mysql-bin # 開啟 log_bin 日志 # 開啟GTID的前提 gtid_mode=ON enforce-gtid-consistency=ON EOF ? ? [root@slave1 ~]# cat >> /etc/my.cnf <<EOF log_bin=mysql-bin symbolic-links=0 # 禁用符號鏈接 server_id=20 # 設(shè)置serverID 為機(jī)器的標(biāo)識符 ? # 開啟GTID的前提 gtid_mode=ON enforce-gtid-consistency=ON EOF ? ? [root@slave2 ~]# cat >> /etc/my.cnf <<EOF log_bin=mysql-bin symbolic-links=0 # 禁用符號鏈接 server_id=30 # 設(shè)置serverID 為機(jī)器的標(biāo)識符 ? # 開啟GTID的前提 gtid_mode=ON enforce-gtid-consistency=ON EOF ? # 重啟 MySQL 服務(wù)重新加載 [root@master ~]# systemctl restart mysqld [root@slave1 ~]# systemctl restart mysqld [root@slave2 ~]# systemctl restart mysqld
2.2 創(chuàng)建主從復(fù)制賬號
MASTER
mysql> set sql_log_bin=0; # 關(guān)閉二進(jìn)制SQL日志寫入 Query OK, 0 rows affected (0.00 sec) ? mysql> show variables like 'sql_log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sql_log_bin | OFF | +---------------+-------+ ? mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; ? # 賦予所有庫所有表 repl 用戶 REPLICATION SLAVE 的權(quán)限 mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; mysql> FLUSH PRIVILEGES; mysql> set sql_log_bin=1;
SLAVE1
mysql> set sql_log_bin=0; Query OK, 0 rows affected (0.00 sec) ? mysql> show variables like 'sql_log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sql_log_bin | OFF | +---------------+-------+ ? mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES; mysql> set sql_log_bin=1;
SLAVE2
mysql> set sql_log_bin=0; Query OK, 0 rows affected (0.00 sec) ? mysql> show variables like 'sql_log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sql_log_bin | OFF | +---------------+-------+ ? mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES; mysql> set sql_log_bin=1;
2.3 實(shí)現(xiàn)GTID的自動定位
SLAVE1 && SLAVE2
mysql> SET SQL_LOG_BIN=0; # 關(guān)閉語句記錄 ? # 指定主服務(wù)器的IP端口以及授權(quán)過的用戶repl,并開啟自動定位 mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.239.100', SOURCE_PORT=3306, SOURCE_USER='repl', SOURCE_PASSWORD='123456', GET_SOURCE_PUBLIC_KEY=1, # 信任證書 SOURCE_AUTO_POSITION=1; # 開啟自動定位功能 ? mysql> START REPLICA; ? # 假如說失敗需要執(zhí)行 STOP REPLICA; 停止復(fù)制 # 之后再執(zhí)行 RESET REPLICA; 刪除配置的語句 ? # 查看連接 master 是否正常 mysql> SHOW REPLICA STATUS\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 192.168.239.100 Source_User: repl Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin.000001 Read_Source_Log_Pos: 158 Relay_Log_File: slave2-relay-bin.000002 Relay_Log_Pos: 375 Relay_Source_Log_File: mysql-bin.000001 Replica_IO_Running: Yes # IO表示鏈接網(wǎng)絡(luò)沒有問題 Replica_SQL_Running: Yes # SQL表示本地同步?jīng)]有問題,如有問題基本上就是配置文件的問題 ? ? mysql> SET SQL_LOG_BIN=0; # 開啟語句記錄
3 導(dǎo)入數(shù)據(jù)查看是否成功
3.1 主服務(wù)器導(dǎo)入SQL腳本
[root@master ~]# mysql -uroot -p123456 mysql> create database gtid; Query OK, 1 row affected (0.00 sec) ? mysql> use gtid Database changed mysql> source gtid.sql; Query OK, 0 rows affected (0.00 sec) ? Query OK, 0 rows affected (0.00 sec) ? ? mysql> show tables; +----------------------------------------+ | Tables_in_gtid | +----------------------------------------+ | aaa | | abi_http_log | | act_app_appdef | | act_app_databasechangelog | | act_app_databasechangeloglock | +----------------------------------------+
3.2 兩個(gè)從服務(wù)器查看是否復(fù)制同步
[root@ slave1 && slave2]# mysql -uroot -p123456 mysql> show databases; +--------------------+ | Database | +--------------------+ | gtid | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.01 sec) mysql> use gtid Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables +----------------------------------------+ | Tables_in_gtid | +----------------------------------------+ | aaa | | abi_http_log | | act_app_appdef | | act_app_databasechangelog | | act_app_databasechangeloglock | +----------------------------------------+
到此這篇關(guān)于MySQL9.1.0實(shí)現(xiàn)GTID模式的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)MySQL9.1.0 GTID模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Kubernetes集群環(huán)境部署MySQL數(shù)據(jù)庫的實(shí)戰(zhàn)記錄
這篇文章主要介紹了使用Kubernetes集群環(huán)境部署MySQL數(shù)據(jù)庫,主要包括編寫 mysql.yaml文件,執(zhí)行如下命令創(chuàng)建,通過相關(guān)命令查看創(chuàng)建結(jié)果,對Kubernetes部署MySQL數(shù)據(jù)庫的過程感興趣的朋友一起看看吧2022-05-05MySQL數(shù)據(jù)庫的一次死鎖實(shí)例分析
本文主要給大家通過一個(gè)實(shí)例來具體介紹MySQL死鎖問題的相關(guān)知識,接下來我們就來一一介紹這部分內(nèi)容,希望能夠?qū)δ兴鶐椭?/div> 2016-11-11MySQL數(shù)據(jù)庫觸發(fā)器從小白到精通
觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),比如當(dāng)對一個(gè)表進(jìn)行操作時(shí)就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等2022-03-03JDK1.7下測試ConnectorJ連接MySQL8.0的方法
MySQL?Connector/J是一個(gè)JDBC?4型驅(qū)動程序。Type?4標(biāo)志意味著驅(qū)動程序是MySQL協(xié)議的純Java實(shí)現(xiàn),不依賴于MySQL客戶端庫,這篇文章主要介紹了JDK1.7下測試ConnectorJ連接MySQL8.0,需要的朋友可以參考下2022-10-10Mysql滿意度調(diào)查分組去除最高最低求平均分的實(shí)現(xiàn)思路
該文章介紹了如何使用SQL查詢實(shí)現(xiàn)按部門分組,去除每個(gè)部門的最高分和最低分,并計(jì)算剩余分?jǐn)?shù)的平均分,文章詳細(xì)描述了實(shí)現(xiàn)這一需求的步驟,包括使用窗口函數(shù)、子查詢和CTE等技術(shù),感興趣的朋友跟隨小編一起看看吧2025-01-01mysql "too many connections" 錯(cuò)誤 之 mysql解決方法
解決方法是修改/etc/mysql/my.cnf,添加以下一行2009-06-06最新評論