一:Mysql主从同步配置:
1.版本问题:
mysql3.2以后才支持同步
MySQL5.6以后跟以前版本做相关配置不同,5.6以后的像master_host等配置不能再写在配置文件里
2.测试:同一台电脑装两个mysql服务
OS:win10
数据库版本:MySQL5.6解压版
<1>.解压后放在C:\mysql下,(这里注意所选目录的首字母不要是常见的\t,\n之类的转义符)分别命名为mysql3307,mysql3308(mysql+端口号)
查看端口号是否被占用:
<2>修改配置文件:basedir = C:\mysql\mysql3307
datadir = C:\mysql\mysql3307\data
port = 3307
server_id = 1
<3>增加mysql3307服务:使用管理员权限的命令提示符,切到mysql3307的bin目录下,执行mysqld install mysql3307 --defaults-file=”C:\mysql\mysql3307\my-default.ini”安装服务成功
<4>启动mysql3307服务:net start mysql3307
注:若启动失败,启动失败的原因:<1>端口号被占用;
<2>执行安装命令时所用的目路路径被转义,也就是目录有/t,/n等转义字符
<4>同样安装mysql3308服务,配置文件:basedir = C:\mysql\mysql3308
datadir = C:\mysql\mysql3308\data
port = 3308
server_id = 2
<5>安装成功并能启动即可
2.配置数据库的相互备份:
<1>增加一个用户账号作为数据库的同步账号:
Mysql3307:
mysql> Grant replication slave on *.* to backup@’localhost’ identified by ‘1234’;
Mysql3308:
mysql> Grant replication slave on *.* to backup@’localhost’ identified by ‘1234’;
注:<1>Grant 权限 on *.* to 用户账号@’允许访问的ip’ identified by ‘用户密码’;这里3307允许访问的ip即3308的ip,即对方库的ip
<2>4.0.2以前版本不支持replication slave,要改成file,即 mysql> Grant file on *.* to backup@’localhost’ identified by ‘1234’;
<2>增加一个需要同步的测试库:
create database news;
<3>配置主从:mysql3307作为主机,mysql3308作为从机
配置主机:
Mysql3307的配置文件: log-bin = backuplog #设置日志文件的名称binlog-do-db = news #制定需要日志的数据库
重启mysql3307服务,show mster status;查看日志情况
配置从机:(测试mysql版本是5.6,所以master_host相关配置不能写在配置里)
CHANGE MASTER TO
MASTER_HOST='localhost', master ip
MASTER_USER='backup',
MASTER_PASSWORD=’1234',
MASTER_LOG_FILE='backuplog.实际情况', (@master show master status \G)
MASTER_LOG_POS=实际pos;
查看从机状态:start slave
Show slave status
注意slave_io_running和对应值是不是yes,如果是说明配置成功,查看同步结果。
注:在生产中,如果遇到断电等情况使服务器停止工作需要主从同步时。需要看哪个服务器 出现同步出错,找到错误信息。一般都是状态里的slave_io_running或者slave_sql_running 值为no。
<1>若slave_io_running=no:查看从机的错误日志定位log位置找到下一个log的位置然后接上,操作过程是关闭slave->更改pos值->重启slave
<2>若slave_sql_running=no:stop slave->set GLOBAL sql_slave_skip_counter =1->start slave;
若要重新从主机做备份数据:先断开主从连接--从机stop slave
mysqldump --master-data=2(/1) -u root -p databases>databases.sql 都等于1不用手工调整
Mysql -u root -p databases<xxx.sql