MySQL主从
准备环境
- 主机
主机名 | IP地址1(外网) | IP地址2(内网) | 系统 | 其他 |
---|---|---|---|---|
master | 192.168.72.130 | 202.207.240.130 | CentOS7.5.1804 | MEM:2G ;CPU:2P/2C;DISK:15G |
slaver | 192.168.72.131 | 202.207.240.131 | CentOS7.5.1804 | MEM:2G ;CPU:2P/2C;DISK:15G |
-
安装好mysql数据库服务
参考:https://blog.csdn.net/weixin_51720652/article/details/125998267
-
配置域名解析
主从复制原理
#####主从复制原理#####
1、在 master上开启 bin-log日志功能,记录更新、插入、删除的语句。
2、必须开启三个线程,主上开启io线程,从上开启io线程和sql线程。
3、slave的io线程去连接master,master通过io线程检查有slave过来的请求,请求日志、 postsion位置。
4、master将这些相应的日志返回给slave,slave自己去下载到本地的realy_log里面, 写入一个master-info日志记录同步的点。
5、slave的sql线程检查到realy-log日志有更新,然后在本地去exec执行。
6、主从同步是属于异步方式。
######################
master服务器配置
-
修改配置文件/etc/my.cnf
[mysqld] basedir = /application/mysql datadir = /application/mysql/data socket = /tmp/mysql.sock server_id = 1 log-bin = mysql-bin auto_increment_offset = 1 auto_increment_increment = 2 log_bin_trust_function_creators = 1 port = 3306 log_error = /application/mysql/data/error_mysql.err [mysql] socket = /tmp/mysql.sock prompt = wjz [\d]>
参数 | 功能 |
---|---|
server_id = 1 | 主数据库端ID号(master和slave主机id必须不一样) |
log-bin = mysql-bin | 开启log-bin日志 |
binlog-ignore-db = mysql | 不需要复制的数据库名 |
binlog-do-db = master_slaver | 需要复制的数据库名,如果多个可重复设置,不设置默认复制所有的数据库 |
auto_increment_offset = 1 | 该参数一般用在主主同步中,用来错开自增值,防止键值冲突 |
auto_increment_increment = 2 | 这个参数一般用在主主同步中,用来错开自增值,防止键值冲突 |
log_bin_trust_function_creators = 1 | 将函数复制到slaver |
-
重启数据库服务
-
登录mysql数据库,配置slaver服务器的用户名、密码、权限等
grant replication slave on *.* to 'slaver'@'%' identified by '111111'; flush privileges;
-
查看master状态
show master status\G;
slaver服务器配置
-
修改配置文件/etc/my.cnf
[mysqld] basedir = /application/mysql datadir = /application/mysql/data socket = /tmp/mysql.sock server_id = 2 relay_log=relay-log read_only=ON port = 3306 log_error = /application/mysql/data/error_mysql.err [mysql] socket = /tmp/mysql.sock prompt = wjz [\d]>
参数说明:
参数 | 功能 |
---|---|
server_id = 2 | |
relay_log=relay-log | 开启relay_log日志主服务器的bin-log日志会同步到该位置 |
read_only=ON | 开启服务器只读 |
replicate-do-db=master_slaver | slaver节点要复制的master节点中的数据库名称 |
- 重启数据库服务
- 设置要复制master的数据库,pos位置
change master to \
master_host='192.168.72.130',master_user='slaver',master_password='111111',\
master_log_file='mysql-bin.000002',master_log_pos=2081;
参数说明:
选项 | 含义 |
---|---|
master_host=‘192.168.72.130’ | master的IP地址 |
master_user=‘slaver’ | master设置给slave的登录用户 |
master_password=‘111111’ | master设置给slave的登录用户的密码 |
master_log_file=‘mysql-bin.000002’ | master的二进制日志文件名称(参考show master status\G;) |
master_log_pos=1095 | master的pos参数值(参考show master status\G;) |
-
登录slave的mysql,开启主从复制,并查看slave状态
start slave; show slave status\G;