一:阿里云数据库与自建数据库搭建主从关系
阿里云数据库:主-master
自建数据库: 从-slave
1、主数据库设置:
由于阿里云本身就具有主从配置,所以阿里云只需要配置相应的账号即可,需要读数据权限。
1、记录阿里云master的bin的位置和日志信息,后面再slave需要这里的参数信息
登录数据库:
# mysql -u root -p
运行命令:
mysql> show master status;
+------------------+----------+--------------+------------------+----------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+----------------------------------------------+
| mysql-bin.001386 | 194 | | | 86015bc7-9abc-11e7-9cd8-00163e084ad1:1-88281 |
+------------------+----------+--------------+------------------+----------------------------------------------+
1 row in set
2、刷新日志
mysql> flush logs;
Query OK, 0 rows affected
注意:因为刷新日志file的位置会+1,即File变成为:mysql-bin.001387
2、自建数据库设置
1、打开数据库配置文件:/etc/my.cnf
在最后面添加以下配置信息,并保存,重启数据库:systemctl restart mysqld.service
# 主从配置项:
# 配置从实例的 server-id 和要同步的数据库
# 服务 ID,主从实例 server-id 需不同
server-id = 1246719
# log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
# 需要同步的数据库
replicate-do-db = jtcone
# 不需要同步的数据库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys
replicate-ignore-db = jtc
replicate-ignore-db = jtctwo
# 不进行同步的表,可以并列写多个
# replicate-wild-ignore-table=db1.table1
# replicate-wild-ignore-table=db2.table2
# 只读
# read_only = 1
# 配置 GTID 同步模式,binlog 格式为 row,以兼容主实例。
gtid_mode=on
enforce_gtid_consistency=on
# 设置 binlog 为 row
binlog_format = row
# 同步主库操作日志
log-slave-updates = 1
# 跳过所有错误,这个参数至关重要,想要研究这个参数的作用,可以先不写,看看发生什么
slave-skip-errors = all
执行如下命令,查看 binlog 配置结果。
# show variables like '%binlog_format%';
返回以下信息:
+-------------------------+-----------------+
| Variable_name | Value |
+-------------------------+-----------------+
| binlog_format | ROW |
+-------------------------+-----------------+
2、登录数据库,设置同步选项,运行以下语句
mysql> CHANGE MASTER TO
MASTER_HOST='rm-wz03g21ikz4v49kspo.mysql.rds.aliyuncs.com',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='u46234216W',
MASTER_AUTO_POSITION=0,
MASTER_LOG_FILE='mysql-bin.001386',
MASTER_LOG_POS=194;
注意:
MASTER_HOST:主数据库地址
MASTER_PORT:主数据库连接端口
MASTER_USER:主数据库连接用户
MASTER_PASSWORD:主数据库连接密码
MASTER_AUTO_POSITION:同步其实位置
MASTER_LOG_FILE:主数据库的日志信息,需要经过第一步查询主数据库
MASTER_LOG_POS:主数据库的日志信息,需要经过第一步查询主数据库
使用的是root的账号设置后,往后即使用其他授权后的用户也可做主从复制。如:jtcuser用户在主数据库同样能对从数据库主从操作。
3、运行slave
mysql> slave start;
停止slave命令:slave stop;
查看slave运行状态:
4、查看运行状态
mysql> show slave status\G;
出现以下:代表成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5、测试,在master数据库中增减数据:
INSERT INTO t_area_user (id ,t_area_id,t_user_id) VALUES ( 'ad111222222d','dadadfa','adfadfad')
DELETE from t_area_user where id ='adad'