linux下mysql8主从同步配置

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: linux下mysql8主从同步配置

1.修改master配置文件


vim /etc/my.cnf


添加以下代码:

[mysqld]#这里如果已经配置过就忽略
basedir=/usr/local/mysql
datadir=/data/mysqldata
socket=/tmp/mysql.sock
user=mysql
port=3306
# master的配置
server-id=1             # 服务器id (设置唯一标识)
binlog-do-db=数据库名称  # 要给从机同步的库
binlog-ignore-db=mysql  # 不给从机同步的库(多个写多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
log-bin=mysql-bin           # 打开日志(主机需要打开),可以指定绝对路径;
expire_logs_days=90     # 自动清理 90 天前的log文件,可根据需要修改


2.重启mysql服务,查看是否生效


重启mysql服务:


cd /usr/local/mysql/bin  #先切换到mysql的bin目录下


因为我们之前并没有将mysql服务添加到系统服务之中,所以必须要要到mysql的bin目录下启动服务


service mysql restart


服务重启过后,我们登陆mysql,并且查看log_bin是否成功开启:


mysql -uroot -p密码


show variables like '%log_bin%';


20200912153441895.png


显示为 on 则表示已经成功开启


3.master数据库上创建主从同步账户


create user '同步账户名'@'从机账户' identified by '密码';
grant replication slave on *.* to 同步账户名@从机ip;
flush privileges; 
select Host,User,authentication_string from mysql.user;


出现下面的数据就说明账户已经建立:


20200912153502130.png


4.master锁表


flush table with read lock;     # 主库锁表;默认28800秒,即8小时自动解锁;
 show master status \G


20200912153522576.png


要和上面那一段一致.


5.拷贝数据库至从库


/usr/local/mysql/bin/mysqldump -uroot -p密码 数据库名称 > /opt/数据库名称.sql (这里代


yum install openssh-clients -y   #相当开启ssh权限


scp /opt/数据库名称.sql root@从机ip地址:/opt/


20200912153543442.png


6.配置从数据库的配置文件


vim /etc/my.cnf


添加下面的代码:

[mysqld]#如果有已经添加过的,请忽略
basedir=/usr/local/mysql    # mysql程序路径
datadir=/data/mysqldata     # mysql数据目录
socket=/tmp/mysql.sock
user=mysql
port=3306
# slave配置
server-id=2                 # MySQLid 后面2个从服务器需设置不同
skip_slave_start=1          # 复制进程不会随着数据库的启动而启动,重启数据库后需手动启动;
#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。
read_only = 1               # 从库普通账户只读;
master_info_repository=TABLE
relay_log_info_repository=TABLE
slave-skip-errors = 1032, 1062, 1007
#relay_log_recovery=1       # 从机禁止写
#super_read_only=1          # 从机禁止写


重启数据库并且登录:


service mysql restart
cd /usr/local/mysql/bin
./mysql -uroot -p密码


7.新建数据库并且合并


如果没有该数据库的话,需要新建数据库:


create database 数据库名称;


之后再/usr/local/mysql/bin路径下执行以下命令:


./mysql -uroot -p 数据库名称 < /opt/数据库名称.sql


这样就已经将数据库拷贝过来了,这是我们可以去Navicat里面查看,发现的确是已经拷贝过来了:

20200912153605197.png


8.配置主库信息,实现主从同步


定制主数据库数据,如果不是第一次设置的,设置之前需要先停掉slave服务:


stop slave;


change master to
master_host='主服务器ip',     # master的ip
master_user='同步账户',            # 备份用户名
master_password='同步账户密码',        # 密码
master_log_file='日志文件',    # 三.3,且要与master的参数一致
master_log_pos=日志文件偏移量;              # 三.3,且要与master的参数一致
#以上参数必须要和上面的参数保持一致!!!!!


之后我们启动slave服务


start slave;
show slave status \G  #查看slave服务


20200912153645918.png


其实到这里我们就已经完成了主从同步复制,这个错误误伤大雅,主要是mysql8开始使用 caching_sha2_password 加密方式,所以识别不出来我们的密码,但不影响使用,但是强迫症的我们还是决定将这个解决,只要重新回到主库的mysql控制台下修改同步账户的加密方式即可,代码如下:


alter user 'backup'@'192.168.1.150' IDENTIFIED WITH mysql_native_password BY 'zkkj0002';
flush privileges;
select user,host,plugin,authentication_string from mysql.user \G


可以看到这样的画面就证明加密方式已经修改了:


20200912153704634.png


并且重启我们的mysql服务,再重复一次上述的操作,我们就能看到下面这段美妙的画面了:


2020091215372846.png


我们再去关闭以下 主数据库的读锁定 就行了.


unlock tables;



到这里我们的同步复制就已经配置完成了.


9.检测是否实现主从同步


最后我们就只需要再来检测以下就行了.

主库操作:


use 数据库名称;
create table test001(id int auto_increment primary key,name varchar(20) not null);
insert into test001 values(null,'will');
insert into test001 values(null,'jim');
insert into test001 values(null,'tom');
select * from 数据库名称.test001;

20200912153750130.png


从库操作:


use 数据库名称;
select * from 数据库名称.test001;


20200912153811688.png


显然没有同步好,所以我们查看错误原因:


show slave status \G


20200912153832962.png


经过检查发现可能是由于数据库字符集有差异,这里我们检查一下主库和从库的字符集:


20200912153851817.png


可以对比一下我们就能发现的确是由于字符集的问题,我们修改完字符集再来看看:


20200912153909110.png


如果你的结果和上述截图一样的话,那么恭喜你,同步复制工作就已经配置好了.

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
5月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
3月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
400 11
|
4月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
496 7
|
4月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
488 11
|
6月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
333 0
|
8月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
507 11
|
7月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
390 0
|
4月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
185 3
|
4月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
883 152