MySQL主从配置
MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
1. 主配置(安装完mysql的虚拟机)
vi /etc/my.cnf
编辑配置文件
[root@www ~]# cat /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysql]
no-auto-rehash
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
port = 3306
socket = /tmp/mysql.sock
log-error = error.log
slow_query_log_file = slow.log
character-set-server = utf8
open_files_limit = 65535
max_connections = 100
max_connect_errors = 100000
lower_case_table_names =1
server_id=1
gtid_mode=on
enforce_gtid_consistency=on
#binlog
log_bin=master-binlog
log-slave-updates=1
binlog_format=row
#relay log
skip-slave-start=1
2.重启MySQL服务 service mysql restart
3.备份MySQL库
mysqldump -uroot -p mysql >/tmp/mysql.sql
4.备份GTID
mysqldump -uroot -p (加上pass后面的一句)mysql >/tmp/mysql.sql
5.创建一个库保存数据
mysql -uroot -p -e "create database kei"
6.将mysql库恢复成新建的库,作为测试数据
数据库配置
mysql -uroot -p kei < /tmp/mysql.sql
7.进入数据库(没有密码)
mysql -uroot -p
8.创建用作同步数据的用户并赋予权限
> grant replication slave on *.* to 'repl' @192.168.60.70 identified by '123456';
9.将表锁住,保持表内数据不变
> flush tables with read lock;
10.显示主机状态
> show master status;
从配置(安装完mysql的虚拟机)
1.编辑配置文件
除了server id不同其他跟主服务器一样
2.重启mysqld服务
3.在主上将文件拷贝到从上,并在从上查看文件大小是否一致
scp /tmp/mysql.sql root@192.168.60.70:/tmp/
4.创建一个和主一样的库
mysql -uroot -p kei < /tmp/mysql.sql
5.将文件内容导入库数据库配置
mysql -uroot -p
6.进入数据库(没有密码)
> change master to master_host='192.168.60.80',master_user='repl',master_password='123456',master_log_file='linux1.000001',master_log_pos=698861;
7.在主上执行解锁表
> unlock tables;
主从验证
1.从服务器上操作并执行命令(防火墙关闭):
> show slave status\G;
若出现两个yes说明主从配置成功
测试主从
1.在主上进入数据库
mysql -uroot -p123456
2
.> select count(*) from db;
> truncate table db;
从服务器上
1在从上进入数据库
mysql -uroot kei
> select count(*) from db;