水韵东平 發表於 2022-9-23 11:10:00

Linux(CentOS) Mysql 8.0.30 安装(多源安装)

<h3 id="linuxcentos-mysql-8030-安装多源安装">Linux(CentOS) Mysql 8.0.30 安装(多源安装)</h3>
<hr>
<blockquote>
<p><font color="red">安装命令根据实际部署情况修改调整,CentOS一般选择通用版本Red Hat Enterprise Linux 7</font><br>
<font color="red">本文档使用wget下载,也可以自主下载上传到服务器,非YUM安装方式</font><br>
版本地址:全版本 | Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)版本<br>
文档更新记录:2022/09/23-MySQL Community Server最新版本号:8.0.30</p>
</blockquote>
<hr>
<h4 id="10-centos7配置阿里云yum源-根据实际情况判断是否需要配置">1.0 CentOS7配置阿里云yum源 ,根据实际情况判断是否需要配置</h4>
<h4 id="11-在安装mysql之前需要卸载服务器自带的mysql包和mysql数据库分支mariadb的包">1.1 在安装MySQL之前,需要卸载服务器自带的MySQL包和MySQL数据库分支mariadb的包</h4>
<pre><code>$ rpm -qa|grep mysql
$ rpm -qa |grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
$ rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
</code></pre>
<h4 id="12-下载此处下载到home目录下">1.2 下载(此处下载到/home目录下)</h4>
<pre><code>$ wget -P /home https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-el7-x86_64.tar
#备注:该包下面有3个子包,此文档主要介绍mysql-8.0.30-el7-x86_64.tar.gz和mysql-router-8.0.30-el7-x86_64.tar.gz
        1、mysql-8.0.30-el7-x86_64.tar.gz         # MySQL主包,此文档使用的包
        2、mysql-router-8.0.30-el7-x86_64.tar.gz    # 用于在应用程序和MySQL服务器之间提供透明路由和负载均衡,从而有效提高MySQL数据库服务的高可用性与可伸缩行,此处不介绍   
        3、mysql-test-8.0.30-el7-x86_64.tar.gz      # 测试包   
</code></pre>
<h4 id="13-多实例安装举例此处安装2个实例从70017002">1.3 多实例安装举例(此处安装2个实例,从7001~7002)</h4>
<pre><code>$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql
$ yum install libaio -y #如果安装失败在安装,一般不需要
$ cd /home
$ tar -xf mysql-8.0.30-el7-x86_64.tar
$ tar -zxvf mysql-8.0.30-el7-x86_64.tar.gz
$ mv mysql-8.0.30-el7-x86_64 /home/mysql
$ mkdir -p /home/mysql/data/{7001,7002}
$ chown -R mysql:mysql /home/mysql
$ cd /home/mysql   
</code></pre>
<h4 id="13-多实例安装举例此处安装2个实例从70017002已开启binlog如果不是用来设置主从的话步长和起始位置设置为1就行配置7003请忽略用来做2主1从的配置">1.3 多实例安装举例(此处安装2个实例,从7001~7002,已开启binlog,如果不是用来设置主从的话步长和起始位置设置为1就行,配置7003请忽略,用来做2主1从的配置)</h4>
<pre><code>$ vim /etc/my.cnf


user=mysql
basedir=/home/mysql
#禁止反解析IP(提高速度)
skip-name-resolve


mysqld=/home/mysql/bin/mysqld_safe
mysqladmin=/home/mysql/bin/mysqladmin
log=/home/mysql/data/mysqld_multi.log


mysqld=mysqld
mysqladmin=mysqladmin
datadir=/home/mysql/data/7001
port=7001
server_id=7001
socket=/tmp/mysql_7001.sock
log_error=/home/mysql/data/error_7001.log

#开启binlog
log_bin=mysql_bin
binlog_format=ROW
lower_case_table_names=1
log_slave_updates=true
gtid_mode=on
enforce_gtid_consistency=1
#不同步的表(当前_其他)
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_&gt;当前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema

#自增起始位置
auto_increment_offset=1
#自增步长
auto_increment_increment=1


mysqld=mysqld
mysqladmin=mysqladmin
datadir=/home/mysql/data/7002
port=7002
server_id=7002
socket=/tmp/mysql_7002.sock
log_error=/home/mysql/data/error_7002.log

#开启binlog
log_bin=mysql_bin
binlog_format=ROW
lower_case_table_names=1
log_slave_updates=true
gtid_mode=on
enforce_gtid_consistency=1
#不同步的表(当前_其他)
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_&gt;当前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema

#自增起始位置
auto_increment_offset=1
#自增步长
auto_increment_increment=1

#
# mysqld=mysqld
# mysqladmin=mysqladmin
# datadir=/home/mysql/data/7003
# port=7003
# server_id=7003
# socket=/tmp/mysql_7003.sock
# log_error=/home/mysql/error_7003.log

# #开启binlog
# log_bin=mysql_bin
# binlog_format=ROW
# lower_case_table_names=1
# log_slave_updates=true
# gtid_mode=on
# enforce_gtid_consistency=1
# #不同步的表(当前_其他)
# binlog_ignore_db=mysql
# binlog_ignore_db=information_schema
# binlog_ignore_db=performance_schema
# #屏蔽同步(其他_&gt;当前)
# replicate_ignore_db=mysql
# replicate_ignore_db=information_schema
# replicate_ignore_db=performance_schema

# #只读
# read_only=1
# innodb_read_only=1
# #super_read_only=1
</code></pre>
<h4 id="13-初始化多实例此处要初始化2个实例从70017002忽略大小写一定要在初始化就加入并记录下原始密码记录下原始密码记录下原始密码后面改密前登录使用">1.3 初始化多实例(此处要初始化2个实例,从7001~7002,忽略大小写一定要在初始化就加入,并记录下原始密码!!!记录下原始密码!!!记录下原始密码!!!,后面改密前登录使用)</h4>
<pre><code>/home/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --lower-case-table-names=1 --basedir=/home/mysql/ --datadir=/home/mysql/data/7001
/home/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --lower-case-table-names=1 --basedir=/home/mysql/ --datadir=/home/mysql/data/7002
</code></pre>
<h4 id="13-设置环境变量用于系统识别mysqld_multimysqladmin等命令">1.3 设置环境变量(用于系统识别mysqld_multi、mysqladmin等命令)</h4>
<pre><code>$ vim /etc/profile
export PATH=/home/mysql/bin:$PATH
$ source /etc/profile
</code></pre>
<h4 id="15-使用mysqld_multi启动单个实例举例7001端口其他端口类似">1.5 使用mysqld_multi启动单个实例举例(7001端口),其他端口类似</h4>
<pre><code>$ mysqld_multi start 7001
</code></pre>
<h4 id="16-使用mysqld_multi启动全部实例">1.6 使用mysqld_multi启动全部实例</h4>
<pre><code>$ mysqld_multi start   
</code></pre>
<h4 id="17-推荐-关闭单个数据库实例命令举例7001">1.7 [推荐] 关闭单个数据库实例命令(举例7001)</h4>
<pre><code>$ mysqladmin -S /tmp/mysql_7001.sock -p shutdown   
#备注:不推荐使用mysqld_multi关闭多实例,因为麻烦,需要在my.cnf文件的模块里面配置用户密码,并且各个数据库的用户密码都需要相同,否则无法关闭
</code></pre>
<h4 id="18-推荐使用socket登录mysql举例7001">1.8 推荐使用socket登录MySQL(举例7001)</h4>
<pre><code>$ mysql -S /tmp/mysql_7001.sock -p
</code></pre>
<h4 id="19-使用mysqld_multi查看实例状态">1.9 使用mysqld_multi查看实例状态</h4>
<pre><code>$ mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld7001 is running
MySQL server from group: mysqld7002 is running
</code></pre>
<h4 id="110-首次登录举例7001必须重新设置密码才能正常使用此处使用">1.10 首次登录(举例7001)必须重新设置密码才能正常使用,此处使用</h4>
<pre><code>$ mysql -S /tmp/mysql_7001.sock -p
# 修改默认root本地密码并创建远程连接用户park
alter userroot@localhost identified by '密码';
create user 'park'@'%' identified with mysql_native_password by '密码';
grant all on *.* to 'park'@'%';
# 创建主从同步的用户backup
create user 'backup'@'%' identified with mysql_native_password by '密码';
grant replication slave on *.* to 'backup'@'%';

flush privileges;
exit;
</code></pre>
<h4 id="111-如果是想配置2台服务器互为主从需要从13的步骤改为-将7001配置的自增步长设置为2自增起始位置设置为1将7002配置的自增步长设置为2自增起始位置设置为2执行初始化">1.11 如果是想配置2台服务器互为主从(需要从1.3的步骤改为 将7001配置的自增步长设置为2,自增起始位置设置为1;将7002配置的自增步长设置为2,自增起始位置设置为2,执行初始化)</h4>
<pre><code>(7001为从7002为主)
7002上执行:
# 登录数据库(获得binlog当前日志位置)
$ mysql -S /tmp/mysql_7002.sock -p
show master status;
得:
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set                        |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| mysql_bin.000001 |   1650 |            | mysql,information_schema,performance_schema | 4ef1f4e6-7a66-11eb-9cc0-e8611f2b6693:1-6 |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
其中:mysql_bin.000001为master_log_file,1650为master_log_pos

7001上执行:
# 登录数据库
$ mysql -S /tmp/mysql_7001.sock -p
change master to master_host='127.0.0.1', master_port=主库端口此处为7002, master_user='主库用户此处为backup', master_password='backup的密码', master_log_file='此处为mysql-bin.000001', master_log_pos=此处为1650 for channel "通道名称此处设置为7002-7001";
flush privileges;
# 启动同步,使用 show slave status\G; 查看 出现两个IO为YES即可,常用start slave;为停止同步
start slave;

(7002为从7001为主)
7001上执行:
# 登录数据库(获得binlog当前日志位置)
$ mysql -S /tmp/mysql_7001.sock -p
show master status;
得:
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set                        |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| mysql_bin.000001 |   1888 |            | mysql,information_schema,performance_schema | 4af1d4e6-7a66-11eb-9ca0-e8611g2b6692:1-8 |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
其中:mysql_bin.000001为master_log_file,1888为master_log_pos

7002上执行:
# 登录数据库
$ mysql -S /tmp/mysql_7002.sock -p
change master to master_host='127.0.0.1', master_port=主库端口此处为7001, master_user='主库用户此处为backup', master_password='backup的密码', master_log_file='此处为mysql-bin.000001', master_log_pos=此处为1888 for channel "通道名称此处设置为7001-7002";
flush privileges;
# 启动同步,使用 show slave status\G; 查看 出现两个IO为YES即可,常用start slave;为停止同步
start slave;

# 备注:可以2台主一台从配合mysql router用,只要channel名称不同就可以同时开2个主同步到一个从
备份顺序(7001主,7002主,7003从):
7001--&gt;7002
7002--&gt;7001
7001-&gt;7003
7002-&gt;7003
</code></pre>


</div>
<div id="MySignature" role="contentinfo">
    为梦想不止不休!<br><br>
来源:https://www.cnblogs.com/virtulreal/p/16722023.html
頁: [1]
查看完整版本: Linux(CentOS) Mysql 8.0.30 安装(多源安装)