本文共 1699 字,大约阅读时间需要 5 分钟。
在搭建数据库主从复制之前,我们先准备两个数据库(这里搭建的是最基础的主从复制结构,主数据库负责写操作,从数据库负责读操作
)。建议两个数据库的版本尽量保持一致
2.1 配置Master节点(主数据库)
先切换到主数据库,进入主数据库的配置文件:
vim /etc/my.cnf
将如下配置粘贴进去:
# 同一局域网内注意要唯一server-id=150# 开启二进制日志功能,名字任意取(mysql-bin就是自定义的二进制名字)log-bin=mysql-bin#复制过滤:不需要备份的数据库不输出(mysql库一般不需要同步)binlog-ignore-db=mysql#为每个session分配内存,在事务过程中用来存储二进制日志的缓存binlog_cache_size=1M#主从复制的格式(mixed,statement,row,默认格式是statement)binlog_format=mixed
2.2 配置Slave节点(从数据库)
切换到从数据库,进入从数据库的配置文件:
vim /etc/my.cnf
将下面配置粘贴到my.cnf
配置文件中
#设置server id ,局域网内必须要唯一server-id=151#开启二进制日志功能,以备slave作为其他从数据库的master时使用(当前主库宕机了,挑选新的从库作为其他从库的主库情况)log-bin=mysql-slave-bin#relay_log配置中继日志relay_log=edu-mysql-relay-bin#复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)binlog-ignore-db=mysql#如果需要同步函数或者存储过程log_bin_trust_function_creators=true#为每个session分配内存,在事务过程中用来存储二进制日志的缓存binlog_cache_size=1M#主从复制的格式(mixed,statement,row,默认格式是statement)binlog_format=mixed#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave_skip_errors=1062
各自执行下面命令,重启主数据库和从数据库
systemctl restart mysqld
2.3 主数据库(Master)授权从数据库(Slave)可以同步权限
master库和slave库的配置文件修改之后,需要在master库里面对slave进行同步授权,允许slave同步master的数据。
此时需要先登录进入master库后台
mysql -u root -p输入数据库密码然后输入如下指令:
#给root用户分配一个replicaiton slave 从节点复制的权限 grant replication slave on *.* to 'root'@'%';#刷新flush privileges;#查看master状态show master status;
2.4 从数据库(Slave)设置主节点同步
登录到从数据库的后台,输入如下指令:
change master tomaster_host='主服务器IP',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=484;
# 开启slavestart slave;#查看主从同步状态show slave status \G;到这里,主从复制结构已经搭建完成,接下来测试:
在navicat
工具中同时连接上主数据库
和从数据库
:
db_test
发现从库也新添加了一个db_test
数据库,说明主从复制搭建成功。 转载地址:http://nvhwi.baihongyu.com/