mysql 主从复制环境搭建测试

mysql 的安装配置,日志分类配置不在赘述,想要了解可参考之前博客
默认已安装两个相同版本数据库

主从复制

在这里插入图片描述

  1. master 把日志写入Binary log 二进制文件
  2. slave 监控binlog 日志有新的变化时,从binlog 读取日志,写入到 relay log 中继日志中
  3. 从库从中继日志读取变化,同步数据

导出数据

从主库导出数据到从库,保证初始状态时两个数据库数据一致。没有数据可忽略

mysqldump -uroot -p -h127.0.0.1 --flush-logs --master-data=2 --routines --triggers --events --single-transaction --databases ikang_db_01 > master_backup.sql

导出失败,配置 binlog后再试

主库配置

vim /etc/my.cnf

  • 慢查询配置
# 慢查询开关
slow_query_log=ON
# 慢查询日志
slow_query_log_file=/var/lib/mysql/slow/slow.log
# 慢查询时间
slow_launch_time=4
long_query_time=3
  • binlog 配置
server_id=200
log_bin=/var/lib/mysql/ikang_binlog  # 日志前缀
binlog_format=row 
expire_logs_days=3
max_binlog_size=200m
  • 主库同步配置
# 不同步数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# 需要同步数据库
binlog-do-db=ikang_db_01
  • 主给从授权
mysql> use mysql;
mysql> grant replication slave on *.* to 'guanzc'@'192.168.56.*' identified by '123456';
# 如果出现错误:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 执行sql
# set global validate_password_policy=LOW;
# set global validate_password_length=6; 
mysql> flush privileges;
  • 当前binglog 日志
mysql> show master status;
+---------------------+----------+--------------+--------------------------+-------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+---------------------+----------+--------------+--------------------------+-------------------+
| ikang_binlog.000003 |      154 | ikang_db_01  | mysql,information_schema |                   |
+---------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)

从库配置

  • 慢查询配置
# 慢查询开关
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/slow.log
slow_launch_time=4
long_query_time=3
  • relay配置
server_id=214
relay_log=/var/lib/mysql/relay-bin
#确保完整性
relay_log_recovery=1 
#从服务器只读
read_only=on 
# 关闭自动链路复制,手动启动
skip_slave_start=on 
# 将主从服务的信息保存进表
master_info_repository=TABLE 
relay_log_info_repository=TABLE
  • 从库表同步配置
# 复制哪些数据库
replicate-do-db=ikang_db
# 不同步数据库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
  • 初始同步主数据
    没有初始数据可忽略
mysql> source master_backup.sql
  • 配置同步信息
mysql>change master to master_host='192.168.56.132',
master_port=3306,
master_user='guanzc',
master_password='123456',
master_log_file='ikang_binlog.000003',
master_log_pos=154;

master_log_file 主库当前使用binlog 日志

  • 删除从库主键策略
    主从数据库主键策略一定不能一样
rm -rf /var/lib/mysql/auto.cnf 
  • 启动
mysql> start slave;
# 停止
mysql> stop slave;
  • 查看从库状态
mysql> show slave status;

测试

  • 主库新增记录
mysql> insert into user_info values(1, 'test1', '123123');
Query OK, 1 row affected (0.00 sec)

mysql> 
mysql> 
mysql> select * from user_info;
+------+----------+----------+
| id   | username | password |
+------+----------+----------+
|    1 | guanzc   | 123456   |
|    2 | ikang    | 123456   |
|    1 | test1    | 123123   |
+------+----------+----------+
3 rows in set (0.00 sec)
  • 从库自动同步
mysql> select * from user_info;
+------+----------+----------+
| id   | username | password |
+------+----------+----------+
|    1 | guanzc   | 123456   |
|    2 | ikang    | 123456   |
|    1 | test1    | 123123   |
+------+----------+----------+
3 rows in set (0.00 sec)

mysql> 

问题

遇到了主库新增记录,没有同步到从库,发现是权限问题,主库是guanzc 用户, 从库没有给 guanzc 用户授权

mysql> grant all privileges on ikang_db_01.* to  'guanzc'@'%';     
mysql> flush privileges;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>