Google Cloud MySQL and Master-master replication



我在不同地区(euus)有两台服务器连接到同一个mysql数据库,我从谷歌云SQL第二代开始,但它仅在us地区可用。

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

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

使用我在us的操作谷歌sql,我可以只:

  1. 我在eu创建了一个新的谷歌SQL云。

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

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

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

/奥斯

Master 在Google Cloud SQL 中不受支持。

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

在 Linux Ubuntu 16.04 上成功实现 MySql 5.7 不会在 Debian 上加载。

在 2 个虚拟机上安装 MySQL

一个。在虚拟机上 sql1 和 sql2

apt update
apt install mysql-server -y
P@ssW0rd2020    P@ssW0rd2020

B. 注释绑定地址以允许全局访问

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

    创建由"P@ssW0rd2020"标识的用户"复制器"@"%"; 在 上授予复制从属服务器权限。由"P@ssW0rd2020"标识的"复制器"@"%"; 刷新特权;

F. 从没有数据库的新虚拟机开始(更好),或者从相互导入/导出数据库到 sql1 和 sql1 2 开始 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 = '复制器',MASTER_PASSWORD = 'P@ssW0rd2020',MASTER_LOG_FILE = 'MYSQL-BIN.000001',MASTER_LOG_POS = 448; 启动从属; 刷新特权;

H. 对 sql2 重复此操作(使 sql1 成为 sql2 的从属

)
  • 在 SQL 2 上

    显示主状态;

    示例输出: +------------------+----------+--------------+------------------+ |文件 |职位 |Binlog_Do_DB |Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ |Mysql-bin.000001 | 448 |示例 |测试,信息| +------------------+----------+--------------+------------------+ 1 行集合(0.00 秒)

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

    停止奴隶; 将 MASTER 更改为 MASTER_HOST = '35.198.195.130',MASTER_USER = '复制器',MASTER_PASSWORD = 'P@ssW0rd2020',MASTER_LOG_FILE = 'MYSQL-BIN.000001',MASTER_LOG_POS = 448; 启动从属;

I. 测试复制

  • 在 sql1 上创建一个数据库,它将在 sql2 上复制,反之亦然。
  • 在 sql2 上创建一个数据库,它将在 sql1 上复制,反之亦然。

成功是甜蜜的!

相关内容

  • 没有找到相关文章

最新更新