簡體   English   中英

Google Cloud MySQL 和 Master-master 復制

[英]Google Cloud MySQL and Master-master replication

我在不同的區域(兩台服務器euus連接到同一個MySQL數據庫),我已經開始與谷歌Cloud SQL的第二代,但它僅適用於us地區。

這個想法是在新的區域eu添加第二個 sql 節點,但我找不到任何關於主-主復制的文檔,因此目前不支持。 這樣對嗎?

附: 我的兩台服務器都需要讀/寫訪問權限。

在我的操作谷歌SQL us ,我能:

  1. 我在eu創建了一個新的 google sql 雲。

  2. eu配置為us的外部副本。

  3. eu配置為us外部主站。

我真的很困惑! 任何幫助將不勝感激。

/烏斯

Google Cloud SQL 不支持 Master-Master。

解決方案來自: https : //www.ryadel.com/en/mysql-master-master-replication-setup-in-5-easy-steps/

在Linux Ubuntu 16.04 上成功實現在google 雲平台MySql 5.7 上不會在Debian 上加載。

/// 在 2 個虛擬機上安裝 MySQL

A. 在虛擬機上 sql1 和 sql2

apt update
apt install mysql-server -y

P@ssW0rd2020    P@ssW0rd2020

B. 注釋 bind-address 以允許全局訪問

cd /etc/mysql/mysql.conf.d/

nano /etc/mysql/mysql.conf.d/mysqld.cnf

C. 重啟 MySQL 服務(cnf 更改)

systemctl restart mysql
systemctl status mysql

D. 在 sql1 上

nano /etc/mysql/conf.d/mysql.cnf

[mysqld]   // note: not [mysql]

server-id=1
log-bin="mysql-bin"
binlog-ignore-db=test
binlog-ignore-db=information_schema
replicate-ignore-db=test
replicate-ignore-db=information_schema
relay-log="mysql-relay-log"
auto-increment-increment = 2
auto-increment-offset = 1

-------------------------------------

systemctl restart mysql
systemctl status mysql

D. 在 sql2 上

nano /etc/mysql/conf.d/mysql.cnf

[mysqld]

server-id=2
log-bin="mysql-bin"
binlog-ignore-db=test
binlog-ignore-db=information_schema
replicate-ignore-db=test
replicate-ignore-db=information_schema
relay-log="mysql-relay-log"
auto-increment-increment = 2
auto-increment-offset = 2

-------------------------------------

systemctl restart mysql (THIS WILL CREATE BIN LOG)
systemctl status mysql

again, flush privileges; ---supposed to 

E. 創建復制器用戶

  • 在 sql1 和 2 上配置(復制器密碼可以相同,也可以不同)

    mysql -u 根 -p

    P@ssW0rd2020

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'P@ssW0rd2020'; 授予復制從屬 TO 'replicator'@'%' 由 'P@ssW0rd2020' 識別; 刷新權限;

F. 從沒有數據庫(更好)或相互導入/導出數據庫到 sql1 和 2 https://dev.mysql.com/doc/refman/8.0/en/copying-databases.html 的新 VM 開始

G.配置從sql1復制到sql2(使sql2成為sql1的slave)

  • 在 sql1 上

    顯示主狀態;

    示例輸出:+-----------------+---------+--------------+- -----------------+ | 檔案 | 職位 | Binlog_Do_DB | Binlog_Ignore_DB | +-----------------+----------+--------------+---- --------------+ | mysql-bin.000001 | 第448話示例 | 測試,信息| +-----------------+----------+--------------+---- --------------+ 1 行(0.00 秒)

    • 注意“文件”和“位置”值
  • 在 sql2 上

    停止奴隸; 將 MASTER 更改為 MASTER_HOST = '104.154.225.215', MASTER_USER = 'replicator', MASTER_PASSWORD = 'P@ssW0rd2020', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER448LOG; 啟動從機; 刷新權限;

H. 對 sql2 重復(使 sql1 成為 sql2 的從屬)

  • 在 sql2 上

    顯示主狀態;

    示例輸出:+-----------------+---------+--------------+- -----------------+ | 檔案 | 職位 | Binlog_Do_DB | Binlog_Ignore_DB | +-----------------+----------+--------------+---- --------------+ | mysql-bin.000001 | 第448話示例 | 測試,信息| +-----------------+----------+--------------+---- --------------+ 1 行(0.00 秒)

    • 注意“文件”和“位置”值
  • 在 sql1 上

    停止奴隸; 將 MASTER 更改為 MASTER_HOST = '35.198.195.130', MASTER_USER = 'replicator', MASTER_PASSWORD = 'P@ssW0rd2020', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER4_8_POS; 啟動從機;

一、測試復制

  • 在 sql1 上創建一個數據庫,它將在 sql2 上復制,反之亦然。
  • 在 sql2 上創建一個數據庫,它將在 sql1 上復制,反之亦然。

成功是甜蜜的! 🤓

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM