MySQL数据库主从同步

简单实现【MySQL数据库主从同步】(一主一从)


环境准备:

1.   安装好两个MySQL数据库

     【可以在两个不同的机器上、可以弄个虚拟机】

     【在同一局域网内,分配好IP地址】

2. 主数据库:Master(192.168.1.101)

3. 从数据库:Slave(192.168.1.103)

步骤:

1. 前提:【主库】和【从库】要同步的表,表结构必须一致。

2. 主从数据库初始信息要相同,包括表结构、表数据、编码等。

主库的设置:

1. 配置my.ini

 
[mysqld]
server-id=1     #配一个唯一的ID编号,1到232–1之间的一个正整数值
#server-id   变量表示该节点在集群内的唯一表示,每个节点必须使用不同的server-id来区分 
log-bin=mysql-bin  #二进制文件存放路径   
#设置要进行或不要进行主从复制的数据库名,同时也要在Slave 上设定。
binlog-do-db = public_clouds  
binlog-do-db=数据库名1
binlog-do-db=数据库名2
binlog-ignore-db=数据库名1
binlog-ignore-db=数据库名2

2. 在主数据库中建立一个备份账户

 
mysql> grant replication slave,reload,super on *.* to backup@192.168.1.103 identified by 'hao';
mysql> flush privileges;         #flush privileges刷新MySQL的系统权限相关表
mysql> show master status;       # 找到File 和 Position 的值记录下来;

3. 保存,并重启mysql服务

 
service mysqld restart

从库设置:

1. 配置my.ini

[mysqld]
server-id=2     #唯一
#设置要进行或不要进行主从复制的数据库名,同时也要在Master 上设定。
replicate-do-db=数据库名1
replicate-do-db=数据库名2
replicate-ignore-db=数据库名1
replicate-ignore-db=数据库名2 

2. 需要为 slave 账户开放全局许可权:Reload、Super、Replication Slave、Replication Client

mysql> change master to master_host='192.168.1.101',master_user='backup',master_password='hao'; 
mysql> start slave;
mysql> show slave status\G;

如果出现,表示配置成功!

 
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

错误信息的处理:

1.新加用户后,没有刷新用户权限,在 master上执行

 
flush privileges; 

2.当Slave_IO_Running: NO  或者 Slave_SQL_Running: NO  

可以尝试,依次执行,

  Stop slave;
  reset slave;
  show slave status\G;

基本操作命令:

 reset slave; 重新启动slave
 load data from master; 从主服务器载入数据。本命令用于对主服务器进行快照
 File 列显示日志名,而 Position 显示偏移量
 SHOW VARIABLES LIKE 'auto_in%';
 SET auto_increment_increment=10; 设置增长幅度
 SET auto_increment_offset=1; 设置初始值
 relay-log 和 relay-log-index; 表示中继日志文件和中继日志索引文件

原创文章,转载请注明: 转载自HSBLOG

本文链接地址: MySQL数据库主从同步