您的位置:首页 > 数据库 > MySQL

两个Mysql数据库主从库单向同步

2016-02-15 12:09 375 查看
鄙人一个技术菜鸟,但是也有一个渴望成功梦想,所以想在新的一年里,在技术方面有所提升,闲暇之余,我将写点博客,对自己学到的东东加以巩固,但技术功底有限,内容可能比较肤浅……


很久之前安排给我同一个战壕的同事让搞一个mysql主从库备份的,但是遗憾的是都2016年了,这么一个东东都没有落实,汗呐!!!你如果看到我的这篇博客的话,没错,我就是在说你呐。言归正传……

一、使用的环境(只是做了测试)

window10-64位+mysql5.6.24

二、具体步骤:

1.互相通信

2.创建同步账户

3.修改主my.ini;

4.修改从库my.ini;

5.从库上启动同步功能

1.设置两台机器能够互相通信

我是在同一局域网测试的,如果亲是要在两台外网服务中测试,具体的网络配置请自行查阅,比如开放端口,防火墙等等,以下内容,为个人所在局域网的设置进行……

主库机器ip:192.168.1.118

从库机器ip:192.168.1.116

2.在主、从机器上各添加同步账户,操作如下:

主库机器

//已命令行的形式登录mysql



//Enter password:(输入的Mysql密码)



//创建账户并授权

create user ‘新账户名’@’host’ identified by ‘密码’;

grant all privileges on 数据库名.表名 to ‘账户名’@’%’

说明:新账户名为创建的用户名,我用backAdmin;密码你懂得;host是指定该账户可以在那个主机上登录,如果是本地用户可以localhost,如果是想让该用户可以在任意远程主机登录,可以使用通配符%;

参考语句如下:create user ‘backAdmin’@’%’ identified by ‘123456’;

数据库名.表名是指将该数据中的某个表的某个权限,授权给某个用户,此处为了测试方便,我将该数据库的所有表的所有的操作权限授予新建的账户,gzante.*表示数据库gzante的所有表,如果表示多有库的所有表,则用*.*,这里的gzante也是要同步的库;

参考语句如下:grant all privileges on gzante.* to ‘backAdmin’@’%’

从库机器

//已命令行的形式登录mysql



//Enter password:(输入的Mysql密码)



//创建账户并授权

create user ‘新账户名’@’host’ identified by ‘密码’;

在从库机器上,先不要提前创建与要备份的主库同名数据库,我是提前在从库机器上创建了一个同名的DBante数据,导致从库的相关设置好了之后,执行start slave的时候,会出现错误,

3.在主库机器修改mysql配置文件(my.ini)我的mysql是安装到D盘的

首先关于my.ini配置文件简单说下,在mysql5.6之前的版本中,my.ini文件在mysql的安装D:\MySQL\MySQL Server 5.6\my.ini目录下,而mysql5.6的my.ini文件被放到了“D:\ProgramData\MySQL\MySQL Server 5.6\my.ini”中,ProgramData文件夹是存放程序数据的文件夹,如果在安装的时候没有修改的话,具体根据自己的配置情况。切记并非有些网友提到的D:\MySQL\MySQL\my-default.ini



在[mysqld]下添加配置文件:

server-id = 1921680118 #必须明确指定一个唯一的服务器Id,我是用了ip地址192.168.0.118,没有加点

log-bin=mysql-bin #是指定二进制日志文件的名称

relay-log=relay-bin #带研究确认

relay-log-index=relay-bin-index #带研究确认

binlog-do-db=gzante #指定要同步的数据库

另外需说明,关于配置my.ini文件中使用的key,如server-id,log-bin等等,连接符到底是下划线_,还是短横线-,需要亲们自己去查阅资料,有的网友用的是server_id,log_in。并且my.ini原始文件中也在混用,一会下划线,一会短横线。

保存文件,重新启动mysql服务,用命令查看配置是否成功,show master status;

4.在从库机器修改mysql配置文件my.ini

在[mysqld]下添加配置文件:

server-id = 1921680116 #必须明确指定一个唯一的服务器Id,我是用了ip地址192.168.0.116,没有加点

log-bin=mysql-bin #是指定二进制日志文件的名称

log_slave_updates = 1 #日志可以更新

read_only=1 #只读

replicate-do-db=gzante #指定要复制的数据库

保存文件,重新启动mysql服务,用命令查看配置是否成功,show slave status\G;

5.在备份服务器上启动同步功能

mysql>

change master to master_host=’192.168.0.118’,master_user=’backAdmin’,

master_password=’123456’, master_log_file=’mysql-bin.000001’,master_log_pos=0;

执行后,可以通过show slave status\G;命令行检查同步功能是否正在执行我们可以看到slave_io_state 为空,slave_io_running、slave_sql_running都显示为NO,说明备份服务器配置成功,但是没有启动。



mysql>start slave;



执行后,可以通过再通过show slave status\G;命令行检查同步功能是否正在执行我们可以看到slave_io_state:Waiting for master to send event

slave_io_running:yes

slave_sql_running:yes

说明备份服务器配置成功,并且同步功能已启动。这时你可以修改主库,刷新从库就会发现奇迹出现。

前面我还提到了一个可能出现的错误,这里我再说下,有时候你可能会发现slave_io_running:yes

slave_sql_running:no的情况,如下图



这个错误很明显,备份库名称已存在,很简单,删除你从库机器上的同名数据,再次执行这句命令,将会自动创建备份库。

mysql>

change master to master_host=’192.168.0.118’,master_user=’backAdmin’,

master_password=’123456’, master_log_file=’mysql-bin.000001’,master_log_pos=0;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库 备份