Yum 安装
1 | rpm -Uvh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm |
主从同步/读写分离
master
1 | server-id = 1 #(标识为master库) |
1 | #1.创建账号并授权 |
备份导出,并将SQL文件传输给slave服务器执行导入。1
mysqldump -uroot --all-databases > /tmp/mydb.sql
slave
1、修改配置文件1
2
3
4
5
6
7server_id=2
binlog-ignore-db=mysql #不记录binlog
replicate-ignore-db=mysql #不复制test库的binlog
log-bin=mysql-bin
binlog_cache_size = 1M
binlog_format=mixed
expire_logs_days=3
2、导入SQL文件1
source mydb.sql;
3、开启同步1
CHANGE MASTER TO MASTER_HOST='192.168.1.228',MASTER_USER='backup',MASTER_PASSWORD='backup',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=399;
4、设置只读
对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:1
2
3mysql> show global variables like "%read_only%";
#查看只读状态
mysql> set global read_only=1;
将salve库从只读状态变为读写状态,需要执行的命令是:1
mysql> set global read_only=0;
- 1.read_only=1只读模式,不会影响slave同步复制的功能,所以在MySQL slave库中设定了read_only=1后,通过 show slave status\G 命令查看salve状态,可以看到salve仍然会读取master上的日志,并且在slave库中应用日志,保证主从数据库同步一致;
- 2.read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户的数据修改操作;在MySQL中设置read_only=1后,普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,但具有super权限的用户,例如在本地或远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;
5、检查状态1
show slave status\G
检查是否和Master状态一致,并且两个线程是否为YES。
测试
在Master上执行以下语句,解除锁表状态。1
UNLOCK TABLES
访问
查询
1 | 查询最新10条数据 顺序、倒序 |
更新
1 |
|
权限
1 | 5.7设置root密码 |
导出
1 | 导入导出 |
binlog 查看
参数说明:
-v, –verbose 用于输出基于row模式的binlog日志,
-vv 为列数据类型添加注释 –base64-output=decode-rows 解码binlog里经过base64编码的内容
1 | mysqlbinlog -vv --base64-output=decode-rows mysql-binlog.xxxx > new.sql |