Mysql的主从配置

一.介绍

Mysql的主从又叫AB复制。就是两台机器做主以后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。

Mysql主从是基于binlog的,主上须开启binlog才能进行主从。

主从过程大概有三个步骤:

1)主将更改操作记录到binlog

2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里中继日志

3)从根据relaylog里面的sql语句按顺序执行

 

二.原理

主服务器上有一个log dump线程,用来和从的I/o线程传递binlog

从服务器上有两个线程,其中I/o线程用来同步主的binlog并生成

Relaylog,另外一个sql线程用来吧relaylog里面的sql语句落地

 

三、在两台机器上安装部署mysql前面都有介绍若是原来有mysql则重新安装或者换个名字

 

       启动主上面的 /etc/init.d/mysqld start(如果没启动就排错,查看mysql.err)

 

、配置mysql主从同步

 

1、主配置

 

基础配置:

vi  /etc/my.cnf   //增加server-id=130和log_bin=linux1

 

 

重启mysqld服务: 

/etc/init.d/mysqld restart

 

 

备份mysql库(加入环境变量)

export  PATH=$PATH:/usr/local/mysql/bin/
mysqldump -uroot mysql> /tmp/mysql.sql

 

 

创建一个库保存数据 

mysql -uroot -e “create database kei”

 

mysql库恢复成新建的库,作为测试数据数据库配置 

mysql -uroot kei < /tmp/mysql.sql

 

 

进入数据库

 mysql -uroot

 

 

创建用作同步数据的用户并赋予权限 

 >grant replication slave on *.* to ‘repl’ @192.168.134.130 identified by ‘123456’;

 

将表锁住,保持表内数据不变  

>flush tables with read lock;

 

显示主机状态  

>show master status;

 

2.从配置

基础配置  编辑配置文件vi  /etc/my.cnf配置server-id=130和主的不一样

 

重启mysqld服务   

/etc/init.d/mysqld restart

 

 

在主上将文件拷贝到从上,并在从上查看文件大小是否一致    

 

scp /tmp/mysql.sql root@192.168.134.130:/tmp/

 

创建一个和主一样的库 

 mysql -uroot -e “create batabase sxt ”

 

将文件内容导入库 数据库配置  

mysql -uroot kei < /tmp/mysql.sql

 

进入数据库 

mysql -uroot   

>stop slave;

> change master to master_host=’’,master_user=’repl’,master_password=’’,master_log_file=’’,master_log_pos=xx;

>change master to master_host=’192.168.134.130’,master_user=’repl’,master_password=’123456’,master_log_file=’linux1.000001’,master_log_pos=698861;

>start slave;

>show slave status\G;

 

在主上执行解锁表

>unlock tables;

 

 

五、主从同步及相关配置参数

 

主从同步验证:

 

从服务器上操作并执行命令(防火墙关闭) 

>show slave status\G;

 

若出现yes,即表示主从配置正常

 

主服务器主要配置参数如下:

binlog-do-db=   //仅同步指定的库
Binlog-ignore-db= //忽略指定库

 

 

从服务器主要配置参数如下:

replicate_do_db=
replicate_ignore_db=
replicate_do_table=
replicate_ignore_table=
replicate_wild_do_table=   //如test.%,支持通配符%
replicate_wild_ignore_table=

 

 

六、测试主从

1.主服务器上

 

在主上进入数据库  

mysql -uroot -p 密码
>select count(*) from db;
>truncate table db;   //删表

 

2.从服务器上

再从上进入数据库 

mysql -uroot sxt
>select count(*) from db;

 

 

 

posted @ 2021-01-27 14:47  AD钙n  阅读(397)  评论(0编辑  收藏  举报