准备两个mysql,A和B,A为主,B为从。前提是这两个数据库现在的表结构要一模一样,否则不成功。这个要锁表处理了。
Amysql添加账户,只用于热备。
语法如下:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
grant replication slave on *.* to 'dog'@'218.206.70.146' identified by '123456';修改A中mysql配置文件,我是yum安装的mysql7.2 配置文件在 /etc/my.cnf
找到配置文件my.cnf打开后,在[mysqld]下修改即可:
[mysqld]
server-id = 1 //唯一id
log-bin=mysql-bin //其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件
binlog-do-db = test //备份的数据库
binlog-ignore-db = mysql //不备份的数据库
重启mysql服务
我的是 service mysqld restart ;其余数据库自行百度
进入mysql服务后,可通过指令查看Master状态,输入如下指令:
flush tables with read lock;这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。 unlock tables;
show master status 得到 master的数据,后面从数据库会用
4.B 数据库 slave设置
同样修改mysql 的配置文件 my.conf
唯一不同的是 server—id 要设置不同的值
重启服务
用change mster 语句指定同步位置
这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:
mysql>stop slave; //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to
>master_host='59.151.15.36',master_user='replicate',master_password='123456',
> master_log_file=' mysql-bin.000016 ',master_log_pos=107;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
到的问题,如果按上面步骤之后还出现如下情况:
则要重新设置slave。指令如下
mysql>stop slave;
mysql>reset slave;
之后停止slave线程重新开始。成功后,则可以开启slave线程了。
mysql>start slave;
查看 slave 状态
查看下面两项值均为Yes,即表示设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
用如下指令进行查看
mysql> show slave status\G;
参考文章:https://www.cnblogs.com/fnlingnzb-learner/p/7000898.html
里面还有 主主热备的教程