前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL5.7.19安装及主从复制构架配置

MySQL5.7.19安装及主从复制构架配置

作者头像
星哥玩云
发布2022-08-17 14:02:20
3510
发布2022-08-17 14:02:20
举报
文章被收录于专栏:开源部署开源部署

这段时间单位安排了一个项目,需求方要求不能用Oracle,必须用开源的MySQL。这可真出了个难题,主要是我不用MySQL好多年。单位dba又是Oracle方向的而且在歇产假,所以只能自己上阵了。

闲话少叙,进入正题。

 一、准备工作

先去官网上找mysql的安装包, https://www.mysql.com/ → DOWNLOADS → Community → MySQL Community Server → MySQL Community Server 5.7.19

我的操作系统是64位CentOS 7.3 在Select Operating System:里面没有这个系统,所以直接选的Red Hat Enterprise Liunx / Oracle Linux 在Select OS Version:里选择了Red Hat Enterprise Liunx 7 / Oracle Linux 7 (x86, 64-bit)

然后下载RPM Bundle(mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar),大小是565.4M

二、安装MySQL5.7.19

下载完成后解压缩:tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar 能够解压出12个包: mysql-community-client-5.7.19-1.el7.x86_64.rpm mysql-community-common-5.7.19-1.el7.x86_64.rpm mysql-community-devel-5.7.19-1.el7.x86_64.rpm mysql-community-embedded-5.7.19-1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.19-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.19-1.el7.x86_64.rpm mysql-community-libs-5.7.19-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.19-1.el7.x86_64.rpm mysql-community-server-5.7.19-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.19-1.el7.x86_64.rpm mysql-community-test-5.7.19-1.el7.x86_64.rpm

安装新版mysql之前,我们需要将系统自带的mariadb-lib卸载 执行 rpm -qa|grep mariadb 查看系统内安装的MariaDB的数据库 mariadb-libs-5.5.44-2.el7.centos.x86_64 卸载 rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps

然后按照下面的顺序逐一安装MySQL: rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm

在安装server包的时候,系统报错:

error: Failed dependencies: libaio.so.1()(64bit) is needed by mysql-community-server-5.7.19-1.el7.x86_64 libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.19-1.el7.x86_64 libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.19-1.el7.x86_64 我安装了 yum install libaio 包问题解决。

error: Failed dependencies: /usr/bin/perl is needed by mysql-community-server-5.7.19-1.el7.x86_64 perl(Getopt::Long) is needed by mysql-community-server-5.7.19-1.el7.x86_64 perl(strict) is needed by mysql-community-server-5.7.19-1.el7.x86_64 我安装了 yum install perl 包问题解决。

安装完成后初始化数据库: 执行 mysqld --initialize 执行后会在/var/log/mysqld.log里生成随机密码:A temporary password is generated for root@localhost: 6fQPWsSNw0-= 记住这个初始化密码,首次登陆mysql数据库要用到的。

更改mysql数据库目录的所属用户及其所属组 chown mysql:mysql /var/lib/mysql -R

启动mysql数据库 systemctl start mysqld.service

登陆mysql数据库 mysql -uroot -p'前面在mysqld.log里获取到的初始密码' 登陆成功后修改密码:mysql > set password=password('pwd_123456'); 然后修改用户允许访问数据库的IP和过期时间: mysql > use mysql; mysql > update user set host='%', password_expired='N' where host='localhost'; // 我在这里配置的是允许任何IP访问,并且账户永不过期。 mysql > SELECT `Host`, `User`, password_expired FROM `user`; mysql > flush privileges; mysql > exit;

至此MySQL5.7.19已经安装完成,通过Navicat for MySQL链接正常。

三、搭建MySQL主从复制

先说一下测试环境: 主数据库的ip地址:172.20.1.139 从数据库的ip地址:172.20.1.141 确保主数据库与从数据库一模一样。 使用root用户分别在主数据库和从数据库上创建好库“test_db”,并且在“test_db”库里创建结构完全一样的表“t_user”。 如果创建表的时候报错(插入、修改时也可能会报这个错) [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatiblewith sql_mode=only_full_group_by 解决办法是在 /etc/my.cnf 里加上下面这行配置: sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

在主数据库上创建同步账号 mysql > GRANT REPLICATION SLAVE,FILE ON *.* TO 'ms_user'@'172.20.1.141' IDENTIFIED BY '123456'; 172.20.1.141:是运行使用该用户的ip地址,从数据库IP ms_user:是新创建的用户名 123456:是新创建的用户名的密码 授权ms_user可以使用test_db库的所有权限:grant all privileges on test_db.* to ms_user@'%' identified by '123456';

配置主数据库的my.cnf文件 [mysqld] server-id=1 log-bin=log binlog-do-db=mstest // 要同步的test_db数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名 binlog-ignore-db=mysql  // 不同步的数据库

配置从数据库的my.cnf文件 [mysqld] server-id=2 binlog-do-db=mstest // 要同步的test_db数据库,要同步多个数据库,就多加几个replicate-db-db=数据库名 binlog-ignore-db=mysql  // 不同步的数据库

重启数据库服务 systemctl restart mysqld.service

登陆从数据库,执行语句: mysql > change master to master_host='172.20.1.139', master_user='ms_user', master_password='123456', master_port=3306; master_host:是主数据库服务器IP地址 master_user:是前面创建的同步账号 master_password:是同步账号的密码 master_port:是主数据库服务器的端口 mysql > start slave; 如果启动成功,可以执行show slave status\G检查状态, 如果slave_io_running和slave_sql_running都为yes,那么表明可以成功同步数据了。

用ms_user用户登陆主数据库服务器(不要忘了给ms_user用户授权使用test_db库),向t_user表里插入一条记录,然后检查从数据库的t_user,应该也出现了一条相同记录。说明部署成功。

四、后记 去O化是趋势,mysql有很多种高性能的构架方式。很想好好研究研究,以后能彻底替换掉单位的oracle数据库。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档