环境为2台ubuntu1604的ECS
先在各数据库创建emeetdb库
master1操作
1.修改A数据库配置文件加入:
[mysqld]
lower_case_table_names=1
server-id = 31
binlog_do_db=emeetdb
replicate-do-db=emeetdb
log-bin=mysql-bin
log-slave-updates
binlog-ignore-db=mysql
slave-skip-errors=all
修改运营商的端口限制,设定固定ip允许访问3306端口
修改ufw :sudo ufw allow from 121.121.121.37 to any port 3306
重启mysql
# service mysql restart
建立用于同步的账户
# mysql -uroot -p
mysql> grant replication slave on *.* to 'root'@'121.121.121.37' identified by 'e88888888#';
拷贝时候注意单引号格式可能错误。
建议使用ip限制,不要开放给所有都可以访问,保障数据库安全
查看File对应值,并记录下来
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 449 | e2222db | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit
master2操作
sudo ufw allow from 39.120.120.31 to any port 3306`
2.修改slave上的配置文件my.cnf
# vi /etc/my.cnf
[mysqld]
lower_case_table_names=1
server-id = 37
binlog_do_db=emeetdb
replicate-do-db=emeetdb
log-bin=mysql-bin
log-slave-updates
binlog-ignore-db=mysql
slave-skip-errors=all
重启mysql
# service mysql restart
在从服务器上建立相应的数据库
# mysql -uroot -p
将39.120.120.31设置为自己的主服务器
mysql> CHANGE MASTER TO
MASTER_HOST='39.120.120.31',MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=449;
#此处的参数都是前面配置和保存的数值
启动从服务器复制功能
mysql> start slave;
mysql> show slave status\G;
…
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
注:
#Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
#Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。
上面两个必须都是yes,其中一个NO均属错误
mysql> exit
错误一可能是没有给用户授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'121.121.121.37' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
错误二是mysql没有监听外部ip访问
如果要让mysql监听到其他的地址,my.cnf中可以将bind-address = 127.0.0.1注释掉。
或者将bind-address = 0.0.0.0监听所有的地址,然后重启mysql服务。
至此,单向主从配置完毕
互为主从继续配置如下
--------------------以下在服务器master2上操作
建立用于同步的账户
mysql -uroot -p
grant replication slave on *.* to 'root'@'39.120.120.31' identified by '123456';
查看File对应值,并记录下来
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 747 | em2222db | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
回到作为从机的master1操作
将121.299.68.37设置为自己的主服务器
mysql> CHANGE MASTER TO
MASTER_HOST='121.121.121.37',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=747;
启动从服务器复制功能
mysql> start slave;
mysql> show slave status\G;
…
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
上面两个必须都是yes,其中一个NO均属错误
mysql> exit
至此互为主从配置完毕