MySql配置主从
Mysql主从配置
MySQL主从介绍
-
MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
-
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
-
主从过程大致有3个步骤
1)主将更改操作记录到binlog里
2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里中继日志
3)从根据relaylog里面的sql语句按顺序执行
-
主上有一个log dump线程,用来和从的I/O线程传递binlog
-
从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地
MySQL主从原理图
MySQL主从配置
-
vi /etc/my.cnf
编辑配置文件-
basedir = /usr/local/mysql datadir = /data/mysql port = 3306 server_id = 130 socket = /tmp/mysql.sock log_bin=linux1
-
-
/etc/init.d/mysqld restart
重启mysql服务 -
ll /data/mysql/
查看 -
添加环境变量
vim /etc/profile
添加-
export PATH=$PATH:/usr/local/mysql/bin
-
source /etc/profile
刷新配置
-
-
mysqldump -uroot mysql > /tmp/mysql.sql
导出mysql的数据信息 -
mysql -uroot -e "create database kei"
创建数据库kei -
mysql -uroot kei < /tmp/mysql.sql
将mysql的数据导入kei数据库中 -
进入数据库执行
grant replication slave on *.* to 'repl' @192.168.207.130 identified by '123456';
创建用作同步数据的用户并赋予权限,IP地址为从节点的地址(replication是MySQL非常出色的一个功能,该功能将一个MySQL实例中的数据复制到另一个MySQL实例中。)
-
flush tables with read lock;
将表锁住 保持数据不变 -
show master status;
查看主机状态
从配置
-
vi /etc/my.cnf
-
basedir = /usr/local/mysql datadir = /data/mysql port = 3306 server_id = 131 socket = /tmp/mysql.sock
-
/etc/init.d/mysqld restart
重启mysql服务
-
scp 主的ip+文件目录 本机接收目录
scp /tmp/mysql.sql root@192.168.37.13:/tmp/
在主上执行将tmp/mysql.sql文件复制到从机上
-
mysql -uroot -e "create database kei"
创建一样的数据库 -
mysql -uroot kei < /tmp/mysql.sql
导入一样的数据库 -
mysql -uroot
stop slave;
停止slave服务 -
进入数据库(没有密码)(
698861为show master status;中的大小
)-
change master to master_host='192.168.37.12',master_user='repl',master_password='123456',master_log_file='linux1.000001',master_log_pos=698861;
-
start slave;
-
-
show slave status\G
-
unlock tables;
在主上执行 解锁表
检验主从配置是否正常
- 使用命令进行测试 主 从同时执行
mysql> use kei;
mysql> show tables;
mysql> select count(*) from db;
- 主上操作,删除数据
mysql> truncate table db;