时间:2021-07-01 10:21:17 帮助过:60人阅读
注意:以上配置了权限,我们需要刷新以下权限使用命令:
mysql>flush privileges;
或者直接重启mysql服务:
service mysql restart;
其实主要是查看以下master的日志文件名字,以及文件所在的位置,使用命令:
show master status;
可以看到类似如下信息:
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 1516 | | | |
+-------------------+----------+--------------+------------------+-------------------+
File: 日志文件名称
Position: 日志所在位置
进入slave的服务器
1)编辑mysql的配置文件,使用命令:
vim /etc/my.cnf
2)添加二进制日志配置,开启二进制(relay-bin只是日志文件名称,可以自己指定)
log-bin=relay-bin
server-id=2
注意:server-id是要指定的,不然会报错,每一台指定一个唯一标识符
mysql>CHANGE MASTER TO >MASTER_HOST=‘master所在服务器的IP‘, >MASTER_USER=‘master授权的账号‘, >MASTER_PASSWORD=‘master授权的密码‘, >MASTER_LOG_FILE=‘master的日志文件名‘, >MASTER_LOG_POS=master的日志所在位置;
在slave上执行
mysql>start slave;
我们可以查看slave的运行状态:
show slave status\G;
可以看到类似如下内容:
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: master的IP地址 Master_User: root Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 1516 Relay_Log_File: slave-bin.000004 Relay_Log_Pos: 1117 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ......
注意:
Slave_IO_Running: YES 表示slave的日志读取线程开启
Slave_SQL_Running: YES 表示SQL执行线程开启
如果有主从复制有错误信息其实也可以看到
以上我们就将主从复制功能设置完毕了,我们可以通过在master里面创建数据库,或者表,插入数据等来测试一下
1)开启了主从复制,slave库如果写入数据的话,可能导致数据回滚从而主从复制线程中断,可以通过以下方式解决:
#通常情况下,您使用了mysql主从集群,应该配置从库为只读,一般如下配置:
#设置数据库为只读,但是对super用户(root)是无效
mysql> set global read_only=1; #1是只读,0是读写
#同时对外创建一个只读的用户
CREATE USER ‘账号名称‘@‘host地址‘ IDENTIFIED BY ‘密码‘;
GRANT SELECT ON databasename.* TO ‘账号名称‘@‘host地址‘;
#切记不要设定全局锁“flush tables with read lock;”,对应的解锁模式命令为:“unlock tables;”
#这样虽然可以限制super用户的只读,但是主从同步就无法工作了。
#如果因为种种确实没有设置从库只读,为了使从库继续工作,解决方案如下:
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
2)如果要停止slave的复制可以使用命令:
mysql>stop slave;
3)由于主从复制是基于I/O的日志,所以会存在一定延时,如果对数据一致性要求非常高的话,简单的主从复制在实际环境中会存在问题 :
1、因为SQLThread和IOThread是默认单线程,当主机的tps(每秒事务处理数)高于从机的Thread所能
mysql主从配置
标签:tle 信息 img ica with 标识符 server-id gif 用户