mysql数据库主从同步配置



两台服务器配置相似尤其是mysql版本一致

主:10.1.1.6

从:10.1.1.8

 

主库配置:

登录数据库建数据库:

mysql> create database HA;

mysql> use HA;

mysql> create table T1(id int,name varchar(20));

service mysqld stop

修改数据库配置文件vi /usretc/my.cnf

扫描二维码关注公众号,回复: 1347785 查看本文章

log-bin=mysql-bin-master  #启用二进制日志

server-id = 1   #本机数据库ID 标示

binlog-do-db=HA   #可以被从服务器复制的库。二进制需要同步的数据库名

binlog-ignore-db=mysql  #不可以被从服务器复制的库

后两个可以不写

service mysqld restart

master授权从库连接(master上操作)

grant replication slave on *.* to 'slave'(用户名)@'10.1.1.8(从库ip' identified by '123456'(密码);

// 查看状态信息

mysql> show master status;

 

记录master上的日志文件名、position两个值需要记住后面要用

// 复制前要保证同步的数据库一致

mysqldump  -usystem -p123456  HA >HA.sql  #也可以导出数据库

关闭两个服务器的防火墙或是自己开启相应的端口,关闭selinux

// 将导出的数据库传给从服务器

方法一:scp  ~/HA.sql  10.1.1.8:/root

不成功的话安装必要的软件openssl-client

 

从库配置:

两台数据库服务器mysql版本要一致

mysql> show variables like '%version%;`

测试连接到主服务器是否成功

mysql -uslave -p123456 -h 10.1.1.6

 

只有复制的权限

导入数据库,和主数据库服务器保持一致

mysql> create database HA;

mysql -usystem -p123456 HA<HA.sql

 

修改从服务器配置文件:

从服务器没必要开启bin-log日志

 

service mysqld stop

vim /etc/my.cnf

server-id = 2

read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户(如超级管理员root用户)的数据修改操作

service nysqld start

 

slave连接master,并开始重做master二进制日志中的事件。

mysql>change master to master_host='10.1.1.6(主库ip',master_user='backup',master_password='backup',master_log_file='mysql-bin-master.000001',master_log_pos=120;

master_log_file的值为上面主数据库状态的日志文件名;master_log_posposition的值

mysql> start slave;

mysql> show slave status\G  查看状态

 

Slave_IO_Running :一个负责与主机的io通信

Slave_SQL_Running:负责自己的slave mysql进程

值都是yes表示同步成功

一般同步成功后,重启主库的话从库对应参数也会变化

 

再到主服务器上查看状态:

mysql> show processlist \G

 

插入数据测试同步:

mysql> insert into T1 values(1,'天河');

从数据库上查看:

select * from HA.T1

 

如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。

mysql> show master status \G;查看当前主库状态

从服务器执行MySQL命令下:

mysql> slave stop;  #先停止slave服务

mysql> change master to master_log_file='mysql-bin-master.000001' ,master_log_pos=120;

#根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果

mysql>slave start;   #启动从服务器同步服务

mysql> show slave status\G; #看一下从服务器的同步情况

Slave_IO_Running: Yes

Slave_SQL_Running: Yes// 如果都是yes,那代表已经在同步

 

// 重启从服务器,再查看状态:

停止从服务器slave stop;

开启从服务器slave start;

// 排错思路:

1、二进制日志没有开启

2IPTABLES 没有放开端口

3、对应的主机 IP地址写错了

 

SQL线程出错

1、主从服务器数据库结构不统一

出错后,数据少,可以手动解决创建插入,再更新slave状态。

注:如果主上误删除了,那么从上也就误删除了。  #因此主上要定期做mysqldump备份。

mysql的主从复制,主要通过binlog日志来实现

如果在从库里删除数据变没法再同步以前的,最好不要在从库里删

猜你喜欢

转载自blog.csdn.net/chanjingyue/article/details/80326044