Google Cloud MySQL和Master-master复制

时间:2017-11-09 14:22:02

标签: mysql replication google-cloud-sql multi-master-replication

我在不同地区有两台服务器(euus)连接到同一个mysql数据库,我已经开始使用google cloud sql第二代,但它只提供在us地区。

我们的想法是在新区域eu中添加第二个sql节点,但我找不到有关Master-Master复制的任何文档,因此目前不支持它。它是否正确?

PS。我的两台服务器都需要读/写访问权限。

使用us中的操作google sql,我可以这样做:

  1. 我在eu创建了一个新的google sql云。

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

  3. eu配置为us的外部主人。

  4. 我真的很困惑!任何帮助将不胜感激。

    / Ouss

2 个答案:

答案 0 :(得分:1)

Google Cloud SQL不支持Master-Master。

答案 1 :(得分:0)

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

在 google 云平台 Linux Ubuntu 16.04 上成功实现 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 root -p

    P@ssW0rd2020

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'P@ssW0rd2020'; 在 . 上授予复制从属设备到由 'P@ssW0rd2020' 标识的 'replicator'@'%'; 刷新权限;

F。从没有数据库(更好)或相互导入/导出数据库到 sql1 和 2 的新 VM 开始 https://dev.mysql.com/doc/refman/8.0/en/copying-databases.html

G。配置从 sql1 到 sql2 的复制 (使sql2成为sql1的奴隶)

  • 在 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 上复制,反之亦然。

成功是甜蜜的! ?