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


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

很久之前安排给我同一个战壕的同事让搞一个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
开始-Mysql
//Enter password:(输入的Mysql密码)
看到这么界面,说明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
开始-Mysql
//Enter password:(输入的Mysql密码)
看到这么界面,说明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
本人是安装到D盘下面
在[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,说明备份服务器配置成功,但是没有启动。
没有执行启动slave之前
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值