首页 文章 精选 留言 我的

精选列表

搜索[mysql8.0.19],共10003篇文章
优秀的个人博客,低调大师

CentOS8编译安装MySQL8.0.19

安装准备 1.下载MySQL安装包(下载安装源码 -- Source Code[集成boost]) 下载地址:https://dev.mysql.com/downloads/mysql 2.编译环境准备:(已经安装就无需重复操作)针对CentOS其他请百度 sh 复制代码 dnf install -y make cmake gcc gcc-c++ ncurses-devel libtirpc-devel openssl-devel tar 3.安装rpcgen 下载rpcgen 下载地址:https://github.com/thkukuk/rpcsvc-proto/releases 解压指定目录 如:/data0/rpcsvc sh 复制代码 xz -d rpcsvc-proto-1.4.1.tar.xz && tar -xvf rpcsvc-proto-1.4.1.tar 进入rpcgen并预编译 sh 复制代码 cd rpcsvc-proto-1.4.1 ./configure 编译安装 sh 复制代码 make && make install 安装 1.解压MySQL到指定目录 如: /data0/mysql sh 复制代码 tar -zxvf mysql-boost-8.0.19.tar.gz 2.创建mysql用户及用户组并禁止mysql用户登录 sh 复制代码 groupadd mysql && useradd -s /sbin/nologin -g mysql -r mysql 3.创建MySQL的数据,日志,临时目录 sh 复制代码 mkdir -p /data1/mysql/data && mkdir -p /data1/mysql/logs && mkdir -p /data1/mysql/temp && mkdir -p /data1/mysql/mysqld 4.配置环境变量 打开文件: sh 复制代码 vi /etc/profile 输入: sh 复制代码 # MySQL export MYSQL_HOME=/data0/mysql export PATH=$MYSQL_HOME/bin:$MYSQL_HOME/lib:$PATH 保存并退出 sh 复制代码 :x 让配置马上生效 sh 复制代码 source /etc/profile 5.编译安装 进入解压的MySQL目录并创建编译文件夹build sh 复制代码 cd /data0/mysql/mysql-8.0.19 && mkdir build && cd build 预编译 sh 复制代码 cmake ../ \ -DCMAKE_INSTALL_PREFIX=/data0/mysql \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=../boost \ -DMYSQL_UNIX_ADDR=/data1/mysql/temp/mysql.sock \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_DATADIR=/data1/mysql/data \ -DMYSQL_TCP_PORT=11010 预编译结果 编译 sh 复制代码 make 编译结果 安装 sh 复制代码 make install 6.修改MySQL目录拥有者为mysql用户 sh 复制代码 chown -Rf mysql:mysql /data0/mysql && chown -Rf mysql:mysql /data1/mysql 7.初始化MySQL数据库 进入MySQL安装目录 sh 复制代码 cd /data0/mysql 初始化 sh 复制代码 bin/mysqld --initialize-insecure --basedir=/data0/mysql --datadir=/data1/mysql/data --user=mysql 8.配置/etc/my.cnf文件 sh 复制代码 vi /etc/my.cnf 9.添加服务,拷贝服务脚本到init.d目录 并设置为开机启动 sh 复制代码 cp support-files/mysql.server /etc/init.d/mysql && chkconfig mysql on 10.启动MySQL sh 复制代码 service mysql start 11.初始化MySQL的root用户密码 sh 复制代码 mysqladmin -u root password 'root' 12.登录MySQL并初始化数据库 登录 sh 复制代码 mysql -uroot -proot 修改信息 命令 说明 use mysql; 使用mysql数据库 create user root@'%' identified by 'root'; 修改root用户可以远程登录,密码为root grant all privileges on . to root@'%' with grant option; 赋予root用户所有权限 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; 修改加密方式适应老的软件(可选) flush privileges; 刷新配置 运行结果 13.运行安全设置脚本 sh 复制代码 /data0/mysql/bin/mysql_secure_installation 提示 说明 Enter current password for root (enter for none): 输入MySQL数据库root用户密码 Press y or Y for Yes, any other key for No: 你想设置验证密码插件吗 Change the root password? \[Y/n] 是否改变root密码 Remove anonymous users? \[Y/n] 是否删除匿名用户 Disallow root login remotely? \[Y/n] 是否禁止root用户远程登录 Remove test database and access to it? \[Y/n] 是否删除test库以及相应权限 Reload privilege tables now? \[Y/n] 重新加载权限表使设置生效 运行结果 14.往防火墙添加11010端口以供远程用户访问 sh 复制代码 firewall-cmd --add-port=11010/tcp --permanent && firewall-cmd --add-port=11010/tcp 15.重启Linux系统尝试从局域网访问 username:root password:root

优秀的个人博客,低调大师

MySQL8.0.19开启GTID主从同步CentOS8

前言 本次搭建目标为1主2从MySQL主从同步结构。采用CentOS8作为操作系统,IP为\[10.0.0.211,10.0.0.212,10.0.0.213]。MySQL版本为8.0.19,端口均采用3306。本文仅讲解主从配置,因此安装MySQL的方式请参考安装文档。 GTID模式介绍 一、GTID Replication介绍 从MySQL5.6开始增加了强大的GTID(Global Transaction ID,全局事务ID)这个特性,用来强化数据库的主备一致性, 故障恢复, 以及容错能力。用于取代过去传统的主从复制(即:基于binlog和position的异步复制)。 借助GTID,在发生主备切换的情况下,MySQL的其他slave可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制position发生误操作的风险。另外,基于GTID的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险。 二、GTID组成 GTID是由server_uuid和事务id组成的,即GTID=server_uuid:transaction_id。 server_uuid,是在MySQL第一次启动时自动生成并持久化到auto.cnf文件(存放在数据目录下,每台机器的server_uuid都不一样。 transaction_id,是一个从1开始的自增计数,表示在这个主库上执行的第n个事务。MySQL会保证事务与GTID之间的1:1映射,如:6ba9a76d-606b-11ea-b3ce-000c29cb3421:1 表示在以6ba9a76d-606b-11ea-b3ce-000c29cb3421为唯一标识的MySQL实例上执行的第1个数据库事务。 一组连续的事务可以用 "-" 连接的事务序号范围表示。例如:6ba9a76d-606b-11ea-b3ce-000c29cb3421:1-15 三、GTID的作用 1.根据GTID可以知道事务最初是在哪个实例上提交的 2.GTID的存在方便了Replication的Failover 四、GTID复制实现的工作原理 1.master更新数据时,会在事务前产生GTID,一同记录到binlog日志中 2.slave端的I/O线程将变更的binlog,写入到本地的relay log中 3.SQL线程从relay log中获取GTID,然后对比slave端的binlog是否有记录(所以MySQL5.6 slave端必须开启binlog) 4.如果有记录,说明该GTID的事务已经执行,slave会忽略 5.如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog 6.在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描 五、GTID使用限制 1.MySQL5.7之后才开始支持动态切换GTID相关的参数 2.不支持CREATE TABLE ... SELECT statements 3.不支持CREATE TEMPORARY TABLE statements inside transactions 4.transaction or statement 既更新了事务表又更新了非事务表 5.使用GTID复制从库跳过错误时,不支持执行sql_slave_skip_counter参数的语法 六、基于GTID复制的优点 1.根据传统的复制原理,当连接发生故障时,需要重新连接到master主机,需要找到binlog和position,然后change master to 连接到master主机,此过程需要人工来做,比较麻烦,也容易出错,尤其是master写操作较多时,更不容易确定position,如果flush table with read lock,势必会影响到线上业务。而GTID复制方式不需要找master的binlog和position,只需要知道master的ip.端口.账号密码,即可进行复制,MySQl会通过内部机制自动找点同步(MASTER_AUTO_POSITION=1) 简单来说就是:简化复制。传统复制是基于file和position来实现的,而file和position是人为确定的,file还好一些,但是position却是实时变动的,难以确定,除非对全库加读锁,但这势必会对线上业务产生影响,GTID会自动找position进行数据同步 2.多线程复制(基于库),在MySQL5.6以前的版本,slave的复制是单线程的。一个事件一个事件的读取应用。而master是并发写入的,所以延迟是避免不了的。唯一有效的方法是把多个库放在多台slave,这样又有点浪费服务器。在MySQL5.6里面,我们可以把多个表放在多个库,这样就可以使用多线程复制,当只有1个库,多线程复制是没有用的(即:所谓的并行复制) 简单来说就是:跟多线程复制相关。多线程复制是基于组提交方式实现的,而组提交信息是存储在GTID中的 七、官方参考文档 https://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html 安装准备 1.CentOS8服务器3台\[1核4线程1G] 主:10.0.0.211 从:10.0.0.212 从:10.0.0.213 2.已经安装好的MySQL服务器3台 MySQL版本需一致,本次采用8.0.19。并且创建好需要同步的数据库(xujun_demo) 安装 主服务器配置 1.编辑my.cnf 在[mysqld]后面添加 sh 复制代码 # 主从同步配置 server-id=1 log-bin=mysql-bin gtid-mode=on enforce-gtid-consistency=on log-slave-updates=on 2.重启MySQL数据库 sh 复制代码 servicemysqlrestart 3.修改数据库信息 连接数据库 sh 复制代码 mysql-uroot-p 创建MySQL专用用户来同步数据 sh 复制代码 use mysql; create user mysync@'%' identified by 'root'; grant all privileges on *.* to mysync@'%' with grant option; ALTER USER 'mysync'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; flush privileges; username:mysync password:root 查看 showmasterstatus; 从服务器配置 1.编辑my.cnf 在[mysqld]后面添加 sh 复制代码 # 主从同步配置 server-id=2 gtid-mode=on enforce-gtid-consistency=on log-slave-updates=on 注意:server-id的值10.0.0.212为2,10.0.0.213为3。如果你有更多从机依次增加即可,不可重复。 2.重启MySQL数据库 sh 复制代码 servicemysqlrestart 3.同步主机设置 命令连接MySQL sh 复制代码 mysql-uroot-p 同步参数设置 sh 复制代码 change master to \ master_host='10.0.0.211', \ master_user='mysync', \ master_password='root', \ master_port=3306, \ MASTER_AUTO_POSITION = 1; 启动同步 sh 复制代码 startslave; 查看状态 sh 复制代码 showslavestatus\G 同步成功显示 Slave_IO_State:Waitingformastertosendevent Slave_IO_Running:Yes Slave_SQL_Running:Yes 测试 在主服务器xujun_demo数据库添加数据,从服务器查看 意外测试 1.从机先关,主机再关。重启后恢复 2.主机先关,从机再关。重启后恢复 3.从机关机,主机未关,并产生数据。重启后恢复并同步数据 注意:主从xujun_demo数据库初始信息要相同,包括表结构、表数据、编码等,如果不相同,则将master主服务器中的信息先备份,然后再导入到从服务器

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册