赞
踩
目录
MySQL主从复制在实际Java应用开发中经常会遇到,记录一下如何快速搭建一主一从实时热备的配置。
我这里是用VMware克隆的2台机器。
操作系统:ubuntu 20.04
数据库:mysql 8.0.32
名称 | IP |
Mysql服务器-master | 192.168.1.10 |
Mysql服务器-slave | 192.168.1.20 |
mysql 8的安装步骤这里就忽略了,大家可以网上找找。我这里是先在一台虚拟机上装好mysql后,再克隆到出另一台虚拟机的,所以启动机器后,需要修改mysql的UUID,否则后面会报错。修改方法:
然后在两台机器上,分别创建数据库test和表user,两个表的数据字段要一样,最好是在一台机器上创建好后,再sql导出并导入到另一台机器。
1)在 /etc/mysql/mysql.conf.d/mysqld.cnf的
核心配置文件的[mysqld]
节点内,移动光标到文件最底端,修改并新增配置:
- server-id = 1 #服务器 id,随意,但要唯一
- log_bin = /var/log/mysql/mysql-bin.log #二进制文件存放路径
- read-only = 0 #[可选] 0(默认)表示读写(主机),1表示只读(从机)
- binlog_expire_logs_seconds = 2592000 #设置日志文件保留的时长,单位是秒
- max_binlog_size = 100M #控制单个二进制日志大小。此参数的最大和默认值是1GB
- binlog_do_db = test #待同步的数据库日志
- binlog_ignore_db = mysql,sys #不同步的数据库日志
2)创建专门用于主从复制用户账号。因此使用root账户登录mysql,并执行如下指令
- #登录
- mysql -u root -p
- #创建用户 我这里用户名为copyuser,注意这里的ip是从库服务器的ip
- CREATE USER 'copyuser'@'192.168.1.20' IDENTIFIED WITH mysql_native_password BY '123456';
- #给主从复制账号授权
- grant replication slave on *.* to 'copyuser'@'192.168.1.20';
3)重启主库的mysql
service mysqld restart
4)再次登录mysql,使用如下指令查看master的状态
show master status;
结果类似如下:我们需要关注File和Position的信息,后面要用到。
1)在 /etc/mysql/mysql.conf.d/mysqld.cnf的
核心配置文件的[mysqld]
节点内,移动光标到文件最底端,修改并新增配置:
- server-id = 2 #服务器 id,随意,但要唯一
- log_bin = /var/log/mysql/mysql-bin.log #二进制文件存放路径
- read-only = 1 #[可选] 0(默认)表示读写(主机),1表示只读(从机)
- binlog_expire_logs_seconds = 2592000 #设置日志文件保留的时长,单位是秒
- max_binlog_size = 100M #控制单个二进制日志大小。此参数的最大和默认值是1GB
- replicate_do_db = test #待同步的数据库日志
- replicate_ignore_db = mysql,sys #不同步的数据库日志
2)然后我们重启从库的mysql
service mysqld restart
3)实现主从同步,在从库具体配置如下:
- #1,先登录mysql,然后执行后续代码
- mysql -u root -p密码
- #2,关闭从库
- stop slave;
- #3,设置同步,注意这里是主库ip,日志名称和位置是我们之前上图中看到的名称和位置
- change master to master_host='192.168.1.10',master_user='copyuser',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=157;
- #4,开启从库
- start slave;
- # 5,检查服务器状态
- show slave status \G;
检测服务器状态正常情况下如下图:
看到Replica has read all relay log; waiting for more updates基本说明配置成功了,已经开始了主从复制。
测试就非常简单了,在主服务器的表中新增一条数据,然后打开从服务器的对应表,发现也有了一样的记录数据,说明就复制成功了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。