mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复。
需要至少两台机器,安装mysql,两台机器要在相通的局域网内,可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。
注意:从服务器的mysql版本必须高于主服务,因为从服务器读取主服务器的bin_log 日志 在本地执行。
高版本的能兼容低版本的 低版本的不能兼容高版本的。
1.打开主机主服务器的my.cnf 编辑,修改主服务器master
vi /usr/local/mysql/my.cnf
找到[mysqld]节点 修改或是添加
#log-bin是指开启二进制操作日志
log-bin=mysql-log
#serverid是指他的唯一id,可以理解为IP.所以说以ip的最后三位为id比较合适
server-id=251
#需要同步的库. 不写同步所有
binlog-do-db = 需要同步的数据库,多个用逗号隔开
log-bin=mysql-log
#serverid是指他的唯一id,可以理解为IP.所以说以ip的最后三位为id比较合适
server-id=251
#需要同步的库. 不写同步所有
binlog-do-db = 需要同步的数据库,多个用逗号隔开
2.重启MySQL
service
mariadb(mysqld) restart
3.添加一个同步用的用户,注意,最好别用root
GRANT
REPLICATION SLAVE ON *.* to '用户'@'%' identified by
'密码';
3.查看主服务器状态
show
master status 看到以下页面成功
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
重启.到此为止.服务器的配置完成
4.修改从服务器slave
即mysql配置文件 步骤同1 id必须唯一
5.配置从服务器slave
change
master to
master_host='103.212.32.135',
master_user='用户',
master_password='密码',
master_log_file='mysql-bin.000001',
master_log_pos=308;
start slave;
master_user='用户',
master_password='密码',
master_log_file='mysql-bin.000001',
master_log_pos=308;
start slave;
6.启动从服务器复制功能
start
slave;
7.检查从服务器复制功能状态
show
slave status G 出现以下说明正确
Slave_IO_State:
Waiting for master to send event
Master_Host 主服务器地址
Master_User 授权帐户名
.........
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
Master_Host 主服务器地址
Master_User 授权帐户名
.........
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
注意:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
到此实现全部过程
8.可能出现的问题
a.Slave_IO_Running:connecting
可能原因为主服务器版本高于从服务器
b.Slave_SQL_Running
值为 NO或 Seconds_Bebind_Master 值为 Null 程序有可能在 slave 上进行了写操作,也有可能是 slave 机器重启后,
事务回滚造成的
解决方案:
msyql> stop slave;
msyql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
msyql> start slave;
解决方案:
msyql> stop slave;
msyql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
msyql> start slave;
9.可能用到的命令
reset
master 清空bin-log日志
start
slave 启动复制线程
stop
slave 停止复制线程
show
processlist 查看从数据库运行的进程
show
binlog events; 只查看第一个binlog文件的内容
show
binlog events in 'mysql-bin.000002'; 查看指定binlog文件的内容
show
binary logs; 获取binlog文件列表
flush
logs;刷新
show
variables like "%log_%"; 查看 bin-log 日志是否成功开启 on为开启
以上就是这次的全部内容!