鄙人一个技术菜鸟,但是也有一个渴望成功梦想,所以想在新的一年里,在技术方面有所提升,闲暇之余,我将写点博客,对自己学到的东东加以巩固,但技术功底有限,内容可能比较肤浅……
很久之前安排给我同一个战壕的同事让搞一个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;