mysql 8 二进制版本安装
1 环境说明
(1)基础环境
操作系统:CentOS Linux release 7.4.1708 (Core)
配置:4c 8GB 100GB
mysql版本:mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
备份工具:percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17.tar.gz
软件下载:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.32-26/binary/tarball/percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17.tar.gz
(2)系统和目录规划
<1>新建目录
mkdir -p /data/mysql/{conf,data,logs,run,tmp,mysql-bin,relay-logs,shell}
目录说明:
conf 配置文件
data 数据目录
logs 普通日志目录
shell 基础脚本目录
run 进程文件目录
tmp 临时文件目录
mysql-bin bin log目录
relay-logs relay log目录
<2>新建用户
groupadd mysql
useradd -r -s /bin/false -g mysql mysql
2 安装操作
(1)安装
tar -xf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /data/mysql/
cd /data/mysql/
mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql-server
(2)配置文件 /data/mysql/conf/my.cnf
[client] port=3306 default-character-set=utf8mb4 socket = /data/mysql/run/mysql.sock [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 #在mysql提示符中显示当前用户、数据库、时间等信息 prompt="\\u@\\h [\\d]>" #不使用自动补全功能 no-auto-rehash [mysqld] port=3306 user = mysql server-id = 6 #time zone default-time-zone = SYSTEM log_timestamps = SYSTEM #设置mysql的安装目录 basedir=/data/mysql/mysql-server #设置mysql数据库的数据的存放目录 datadir=/data/mysql/data max_connections=5000 max_connect_errors=5000 #定义sock文件 socket = /data/mysql/run/mysql.sock pid_file=/data/mysql/run/mysqld.pid #定义打开最大文件数 open_files_limit = 65535 #服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 #创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #默认使用mysql_native_password插件认证 default_authentication_plugin=mysql_native_password #是否对sql语句大小写敏感,1表示不敏感 lower_case_table_names = 1 #关闭dns解析 skip_name_resolve = 1 #开启gtid模式 gtid-mode = on enforce-gtid-consistency=1 #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭 #MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效 interactive_timeout = 28800 wait_timeout = 28800 #Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6 #执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞 lock_wait_timeout = 3600 #内部内存临时表的最大值 #比如大数据量的group by ,order by时可能用到临时表, #超过了这个值将写入磁盘,系统IO压力增大 tmp_table_size = 64M max_heap_table_size = 64M ###### slow log ###### #slow存储方式 log-output=file #开启慢查询日志记录功能 slow_query_log = 1 #慢日志记录超过1秒的SQL执行语句,可调小到0.1秒 long_query_time = 1 #慢日志文件 slow_query_log_file = /data/mysql/logs/slow3306.log #记录由Slave所产生的慢查询 #log-slow-slave-statements = 1 #开启DDL等语句慢记录到slow log log_slow_admin_statements = 1 #记录没有走索引的查询语句 log_queries_not_using_indexes =1 #表示每分钟允许记录到slow log的且未使用索引的SQL语句次数 log_throttle_queries_not_using_indexes = 60 #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志 min_examined_row_limit = 100 #错误日志 log_error_verbosity=3 log_error=/data/mysql/logs/mysql_error.log #一般日志开启,默认关闭 general_log=on #一般日志文件路径 general_log_file=/data/mysql/logs/general_log.logs ####### binlog ###### ##binlog 格式 binlog_format = row ##binlog文件 log-bin = /data/mysql/mysql-bin/mysql-3306-bin ##binlog的cache大小 binlog_cache_size = 4M ##binlog 能够使用的最大cache max_binlog_cache_size = 2G ##最大的binlog file size max_binlog_size = 1G ##当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,注重binlog安全性可以设为1 sync_binlog = 0 ##procedure log_bin_trust_function_creators=1 ##保存bin log的天数 expire_logs_days = 10 #限制mysqld的导入导出只能发生在/tmp/目录下 secure_file_priv="/data/mysql/tmp/" #relay log #复制进程就不会随着数据库的启动而启动 skip_slave_start = 1 #relay log的最大的大小 max_relay_log_size = 128M #SQL线程在执行完一个relay log后自动将其删除 relay_log_purge = 1 #relay log受损后,重新从主上拉取最新的一份进行重放 relay_log_recovery = 1 #relay log文件 relay-log=/data/mysql/relay-logs/relay-bin relay-log-index=/data/mysql/relay-logs/relay-bin.index #开启slave写realy log到binlog中 log_slave_updates #开启relay log自动清理,如果是MHA架构,需要关闭 relay-log-purge = 1 #设置relay log保存在mysql表里面 master_info_repository = TABLE relay_log_info_repository = TABLE [mysqldump] quick max_allowed_packet = 32M [xtrabackup] socket = /data/mysql/run/mysql.sock
(3)初始化实例
<1>授权
chown mysql:mysql -R /data/mysql
<2>初始化
/data/mysql/mysql-server/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --lower-case-table-names=1 --initialize-insecure
注:此处必须加上 --lower-case-table-names=1 忽略表名大小写,这个是 mysql 8 必须加的
<3>配置环境变量
echo 'export PATH=/data/mysql/mysql-server/bin:$PATH' >> /etc/profile.d/mysql8.sh source /etc/profile.d/mysql8.sh
<4>授权
chown mysql:mysql -R /data/mysql chown mysql:mysql /etc/profile.d/mysql8.sh
(4)启动操作
<1>基础启动关闭
1>启动
/data/mysql/mysql-server/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --user=mysql >> /data/mysql/logs/mysql-server.logs 2>&1 &
2>关闭(此处初始化没有密码)
/data/mysql/mysql-server/bin/mysqladmin -uroot -p -S /data/mysql/run/mysql.sock shutdown
<2>supervisorctl方式管理
[program:mysqld] command=/data/mysql/mysql-server/bin/mysqld --basedir=/data/mysql/mysql-server --datadir=/data/mysql/data --plugin-dir=/data/mysql/mysql-server/lib/plugin --log-error=/data/mysql/logs/mysql_error.log --pid-file=/data/mysql/run/mysqld.pid --socket=/data/mysql/run/mysql.sock priority=99 user=mysql directory=/data/tmp autostart=true autorestart=false startsecs=3 startretries=999999 redirect_stderr=false stdout_logfile=/data/logs/supervisord/mysqld.log
(5)授权操作
#进入控制台 mysql -uroot -p -S /data/mysql/run/mysql.sock <1>root用户权限修改 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'; <2>普通用户 #创建普通用户 CREATE user 'user1'@'x.x.x.%'; #添加密码 alter user 'user1'@'x.x.x.%' identified with mysql_native_password by 'xxxxxx'; #授权 grant select,insert,update,delete,create on *.* to 'user1'@'x.x.x.%'; #检查权限 show grants for 'user1'@'x.x.x.%' flush privileges; #用户检查 select Host,User,authentication_string from mysql.user; select user,host,grant_priv from mysql.user; #如果root用户无授权能力(grant_priv = 'N'), 则可以开起来 update mysql.user set grant_priv='Y' where user='root'; #创建新的数据库 create database data_num default character set utf8mb4 collate utf8mb4_unicode_ci;
(6)xtrabackup部署
tar -xf percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17.tar.gz -C /data/mysql/ cd /data/mysql/ mv percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17 xtrabackup #vim /etc/profile.d/xbk.sh export XBK=/data/mysql/xtrabackup/ export PATH=$XBK/bin:$PATH #加载 source /etc/profile.d/xbk.sh #查看版本: #xtrabackup --version 2023-04-26T11:43:08.664949+08:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql --innodb_buffer_pool_size=512M xtrabackup version 8.0.32-26 based on MySQL server 8.0.32 Linux (x86_64) (revision id: 34cf2908)
3 完整的脚本安装

1 #!/bin/bash 2 3 echo "###################################install redis#####################################################" 4 groupadd mysql 5 useradd -r -s /bin/false -g mysql mysql 6 7 curl -# -O https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz; 8 mkdir -p /data/mysql/{conf,data,logs,run,tmp,mysql-bin,relay-logs,shell} 9 tar -xf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /data/mysql/ 10 cd /data/mysql/ 11 mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql-server 12 13 echo '[client] 14 port=3306 15 default-character-set=utf8mb4 16 socket=/data/mysql/run/mysql.sock 17 18 [mysql] 19 #设置mysql客户端默认字符集 20 default-character-set=utf8mb4 21 #在mysql提示符中显示当前用户、数据库、时间等信息 22 prompt="\\u@\\h [\\d]>" 23 #不使用自动补全功能 24 no-auto-rehash 25 26 [mysqld] 27 port=3306 28 user=mysql 29 server-id=36 30 31 #time zone 32 default-time-zone=SYSTEM 33 log_timestamps=SYSTEM 34 35 #设置mysql的安装目录 36 basedir=/data/mysql/mysql-server 37 38 #设置mysql数据库的数据的存放目录 39 datadir=/data/mysql/data 40 41 #连接数 42 max_connections=5000 43 max_connect_errors=10000 44 45 #定义sock文件 46 socket=/data/mysql/run/mysql.sock 47 pid_file=/data/mysql/run/mysqld.pid 48 49 #定义打开最大文件数 50 open_files_limit=65535 51 52 #服务端使用的字符集默认为UTF8 53 character-set-server=utf8mb4 54 55 #创建新表时将使用的默认存储引擎 56 default-storage-engine=INNODB 57 58 #默认使用mysql_native_password插件认证 59 default_authentication_plugin=mysql_native_password 60 61 #是否对sql语句大小写敏感,1表示不敏感 62 lower_case_table_names=1 63 64 #关闭dns解析 65 skip_name_resolve=1 66 67 #开启gtid模式 68 gtid-mode=on 69 enforce-gtid-consistency=1 70 71 #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭 72 #MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效 73 interactive_timeout=28800 74 wait_timeout=28800 75 76 #Metadata Lock最大时长(秒),一般用于控制 alter操作的最大时长sine mysql5.6 77 #执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞 78 lock_wait_timeout=3600 79 #内部内存临时表的最大值 80 #比如大数据量的group by ,order by时可能用到临时表, 81 #超过了这个值将写入磁盘,系统IO压力增大 82 tmp_table_size=64M 83 max_heap_table_size=64M 84 85 ###### slow log ###### 86 #slow存储方式 87 log-output=file 88 #开启慢查询日志记录功能 89 slow_query_log=1 90 #慢日志记录超过1秒的SQL执行语句,可调小到0.1秒 91 long_query_time=1 92 #慢日志文件 93 slow_query_log_file=/data/mysql/logs/slow3306.log 94 #记录由Slave所产生的慢查询 95 #log-slow-slave-statements=1 96 #开启DDL等语句慢记录到slow log 97 log_slow_admin_statements=1 98 #记录没有走索引的查询语句 99 log_queries_not_using_indexes =1 100 #表示每分钟允许记录到slow log的且未使用索引的SQL语句次数 101 log_throttle_queries_not_using_indexes=60 102 #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志 103 min_examined_row_limit=100 104 105 #错误日志 106 log_error_verbosity=3 107 log_error=/data/mysql/logs/mysql_error.log 108 109 #一般日志开启,默认关闭 110 general_log=on 111 #一般日志文件路径 112 general_log_file=/data/mysql/logs/general_log.logs 113 114 ####### binlog ###### 115 ##binlog 格式 116 binlog_format=row 117 ##binlog文件 118 log-bin=/data/mysql/mysql-bin/mysql-3306-bin 119 ##binlog的cache大小 120 binlog_cache_size=4M 121 ##binlog 能够使用的最大cache 122 max_binlog_cache_size=2G 123 ##最大的binlog file size 124 max_binlog_size=1G 125 ##当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,注重binlog安全性可以设为1 126 sync_binlog=0 127 128 ##procedure 129 log_bin_trust_function_creators=1 130 ##保存bin log的天数 131 expire_logs_days=14 132 133 #限制mysqld的导入导出只能发生在/tmp/目录下 134 secure_file_priv="/data/mysql/tmp/" 135 136 #relay log 137 #复制进程就不会随着数据库的启动而启动 138 skip_slave_start=1 139 #relay log的最大的大小 140 max_relay_log_size=128M 141 #SQL线程在执行完一个relay log后自动将其删除 142 relay_log_purge=1 143 #relay log受损后,重新从主上拉取最新的一份进行重放 144 relay_log_recovery=1 145 #relay log文件 146 relay-log=/data/mysql/relay-logs/relay-bin 147 relay-log-index=/data/mysql/relay-logs/relay-bin.index 148 #开启slave写realy log到binlog中 149 log_slave_updates 150 #开启relay log自动清理,如果是MHA架构,需要关闭 151 relay-log-purge=1 152 153 #设置relay log保存在mysql表里面 154 master_info_repository=TABLE 155 relay_log_info_repository=TABLE 156 157 [mysqldump] 158 quick 159 max_allowed_packet=32M 160 161 [xtrabackup] 162 socket=/data/mysql/run/mysql.sock' >> /data/mysql/conf/my.cnf 163 164 echo "########################### primary mysql #################################" 165 chown mysql:mysql -R /data/mysql 166 /data/mysql/mysql-server/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --user=mysql --lower-case-table-names=1 --basedir=/data/mysql/mysql-server --datadir=/data/mysql/data --initialize-insecure 167 168 echo 'export PATH=/data/mysql/mysql-server/bin:$PATH' >> /etc/profile.d/mysql8.sh 169 source /etc/profile.d/mysql8.sh 170 chown mysql:mysql /etc/profile.d/mysql8.sh 171 chown mysql:mysql -R /data/mysql 172 173 echo '/data/mysql/mysql-server/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --user=mysql >> /data/mysql/logs/mysql-server.logs 2>&1 &' >> /data/mysql/shell/run.sh 174 echo '/data/mysql/mysql-server/bin/mysqladmin -uroot -p -S /data/mysql/run/mysql.sock shutdown' >> /data/mysql/shell/stop.sh 175 su -l 176 curl -# -O https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.32-26/binary/tarball/percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17.tar.gz; 177 tar -xf percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17.tar.gz -C /data/mysql/ 178 cd /data/mysql/ 179 mv percona-xtrabackup-8.0.32-26-Linux-x86_64.glibc2.17 xtrabackup 180 181 chown -R mysql:mysql /data/mysql/xtrabackup 182 echo 'export XBK=/data/mysql/xtrabackup/' >> /etc/profile.d/xbk.sh 183 echo 'export PATH=$XBK/bin:$PATH' >> /etc/profile.d/xbk.sh 184 chown mysql:mysql /etc/profile.d/xbk.sh 185 source /etc/profile.d/xbk.sh 186 xtrabackup --version 187 echo "################################## install mysql end #####################################" 188 189 echo "#### info #### 190 #进入控制台 191 mysql -uroot -p -S /data/mysql/run/mysql.sock 192 193 #root用户权限修改 194 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'; 195 196 197 #普通用户 198 #创建普通用户 199 CREATE user 'user1'@'x.x.x.%'; 200 201 #添加密码 202 alter user 'user1'@'x.x.x.%' identified with mysql_native_password by 'xxxxxx'; 203 204 #授权 205 grant select,insert,update,delete,create on *.* to 'user1'@'x.x.x.%'; 206 207 #检查权限 208 show grants for 'user1'@'x.x.x.%' 209 flush privileges; 210 211 #用户检查 212 select Host,User,authentication_string from mysql.user; 213 select user,host,grant_priv from mysql.user; 214 215 #如果root用户无授权能力(grant_priv='N'), 则可以开起来 216 update mysql.user set grant_priv='Y' where user='root'; 217 218 #创建新的数据库 219 create database data_num default character set utf8mb4 collate utf8mb4_unicode_ci;"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术