mysql 7 二进制版本安装

使用如下脚本,直接安装即可

mysql版本:mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
备份工具:percona-xtrabackup-2.4.20-Linux-x86_64.el7.tar.gz

  1 #!/bin/bash
  2 
  3 if ! id -u  'mysql' >/dev/null 2>&1; then
  4     groupadd mysql;
  5     useradd mysql -g mysql -M -s /sbin/nologin;
  6 fi
  7 
  8 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz;
  9 mkdir -p /data/lib/mysql/{data,run,logs,conf,logbin,tmp,shell,backup}
 10 mkdir -p /data/logs/mysql
 11 
 12 tar -xf mysql5.7.21/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
 13 mv mysql-5.7.21-linux-glibc2.12-x86_64 /data/logs/mysql/mysql-server
 14 
 15 echo '[client]
 16 port=3306
 17 socket=/data/lib/mysql/run/mysql.sock
 18 
 19 [mysql]
 20 #在mysql提示符中显示当前用户、数据库、时间等信息
 21 prompt="\\u@\\h [\\d]>" 
 22 #不使用自动补全功能
 23 no-auto-rehash
 24 
 25 [mysqld]
 26 #定义mysql主程序目录
 27 basedir=/data/lib/mysql/
 28 #定义数据目录
 29 datadir=/data/lib/mysql/data/
 30 socket=/data/lib/mysql/run/mysql.sock
 31 #定义临时目录
 32 tmpdir=/data/lib/mysql/tmp
 33 #pid 文件
 34 pid-file=/data/lib/mysql/run/mysqld.pid
 35 #启动的用户
 36 user=mysql
 37 #定义端口
 38 port=3306
 39 #server id,需要修改,集群之间不能冲突
 40 server-id=36
 41 #指定客户端字符集
 42 character-set-server=utf8mb4
 43 #开启EVENT支持
 44 event_scheduler=1
 45 #清空sql_mode规则
 46 sql_mode=''
 47 
 48 #time zone
 49 default-time-zone=SYSTEM
 50 log_timestamps=SYSTEM
 51 
 52 #timeout
 53 interactive_timeout=28800
 54 wait_timeout=28800
 55 
 56 #定义打开最大文件数
 57 open_files_limit=65535
 58 #设置最大连接数
 59 max_connections=13000
 60 #设置每个主机的连接请求异常中断的最大次数
 61 max_connect_errors=10000
 62 #大小写不敏感
 63 lower_case_table_names=1
 64 #关闭dns解析
 65 skip_name_resolve=1
 66 
 67 #开启gtid模式
 68 gtid-mode=on
 69 enforce-gtid-consistency=1
 70 lock_wait_timeout=3600
 71 
 72 ###### 慢日志 ######
 73 #slow存储方式
 74 log-output=file
 75 #开启慢查询日志记录功能
 76 slow_query_log=1
 77 #慢日志记录超过1秒的SQL执行语句,可调小到0.1秒
 78 long_query_time=5
 79 #慢日志文件
 80 slow_query_log_file=/data/lib/mysql/logs/slow-mysql.log
 81 #记录由Slave所产生的慢查询
 82 #log-slow-slave-statements=1
 83 #开启DDL等语句慢记录到slow log
 84 log_slow_admin_statements=1
 85 #记录没有走索引的查询语句
 86 log_queries_not_using_indexes=1
 87 #表示每分钟允许记录到slow log的且未使用索引的SQL语句次数
 88 log_throttle_queries_not_using_indexes=60
 89 #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
 90 min_examined_row_limit=100
 91 
 92 ###### mysql错误日志文件 ######
 93 log-error=/data/lib/mysql/logs/error-server.log
 94 #将新发起连接时产生的"失败的连接""拒绝访问"类的错误信息也记录进错误日志
 95 log_warnings = 2
 96 
 97 ####### binlog config ######
 98 #binlog 格式
 99 binlog_format=row
100 #binlog文件
101 log-bin=/data/lib/mysql/logbin/mysql-server-bin
102 #binlog的cache大小
103 binlog_cache_size=4M
104 #binlog 能够使用的最大cache
105 max_binlog_cache_size=2G
106 #最大的binlog file size
107 max_binlog_size=1G
108 #当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,注重binlog安全性可以设为1
109 sync_binlog=0
110 #procedure 
111 log_bin_trust_function_creators=1
112 #保存bin log的天数
113 expire_logs_days=14
114 
115 #限制mysqld的导入导出只能发生在/tmp/目录下
116 secure_file_priv="/data/lib/mysql/tmp/"
117 
118 ####################### relay log #######################
119 #复制进程就不会随着数据库的启动而启动
120 skip_slave_start=1
121 #relay log的最大的大小
122 max_relay_log_size=128M
123 #SQL线程在执行完一个relay log后自动将其删除
124 relay_log_purge=1
125 #relay log受损后,重新从主上拉取最新的一份进行重放
126 relay_log_recovery=1
127 #relay log文件
128 relay-log=/data/lib/mysql/logbin/relay-bin
129 relay-log-index=/data/lib/mysql/logbin/relay-bin.index
130 #开启slave写realy log到binlog中
131 log_slave_updates
132 #开启relay log自动清理,如果是MHA架构,需要关闭
133 relay-log-purge=1
134 #设置relay log保存在mysql表里面
135 master_info_repository=TABLE
136 relay_log_info_repository=TABLE
137 
138 #关闭query
139 query_cache_size=0
140 query_cache_type=0
141 
142 #buffers & cache
143 table_open_cache=1024
144 table_definition_cache=1024
145 table_open_cache_instances=64
146 
147 max_heap_table_size=96M
148 sort_buffer_size=16M
149 join_buffer_size=16M
150 thread_cache_size=200
151 
152 #每个连接线程被创建时,MySQL给它分配的内存大小,单位:K
153 thread_stack=512K
154 tmp_table_size=96M
155 key_buffer_size=32M
156 read_buffer_size=8M
157 #MySql的随机读缓冲区大小
158 read_rnd_buffer_size=16M
159 bulk_insert_buffer_size=64M
160 
161 thread_cache_size=7518
162 back_log=1024
163 
164 ###### myisam ######
165 #MyISAM表发生变化时重新排序所需的缓冲
166 myisam_sort_buffer_size=128M
167 #MySQL重建索引时所允许的最大临时文件的大小
168 myisam_max_sort_file_size=1G
169 #如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们
170 myisam_repair_threads=1
171 
172 ###### innodb ######
173 #pool的大小
174 innodb_buffer_pool_size=2G
175 #pool的个数
176 innodb_buffer_pool_instances=8
177 #开启实例down了,dump出innodb buffer
178 innodb_buffer_pool_dump_at_shutdown=1
179 #开启实例重启后,预加载innodb buffer
180 innodb_buffer_pool_load_at_startup=1
181 #mysql数据字典文件
182 innodb_data_file_path=ibdata1:1G:autoextend
183 #事物提交,redo log不写入硬盘而是写入系统缓存,就认为事务成功,日志仍然会每秒flush到硬盘,安全性要求高的话,可以设置为1
184 innodb_flush_log_at_trx_commit=2
185 #存redo log的buffer大小
186 innodb_log_buffer_size=8M
187 #redo log文件大小
188 innodb_log_file_size=1G
189 #一组redo log的文件个数
190 innodb_log_files_in_group=3
191 #脏页占innodb buffer pool到50%,触发刷新
192 innodb_max_dirty_pages_pct=50
193 #开启独立表空间模式
194 innodb_file_per_table=1
195 #事务因加锁超时,回滚整个事务
196 innodb_rollback_on_timeout
197 #事务隔离级别为RR模式
198 transaction_isolation=REPEATABLE-READ
199 #innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log
200 innodb_flush_method=O_DIRECT
201 #关闭查询I_S库的相关统计表时,触发更新统计信息
202 innodb_stats_on_metadata=0
203 
204 #innodb_max_undo_log_size=4G
205 #事务等待获取资源等待的最长时间,单位秒
206 innodb_lock_wait_timeout=10
207 #事务B在锁等待超时后是回滚事务内所有的statement还是最后一条语句,0表示rollback最后一条语句,默认值;1表示回滚事务B内所有的statements;
208 innodb_rollback_on_timeout=1
209 #开启死锁相关信息保存到MySQL错误日志
210 innodb_print_all_deadlocks=1
211 
212 #使用哪个存储引擎来管理磁盘上的内部临时表
213 internal_tmp_disk_storage_engine=InnoDB
214 
215 innodb_write_io_threads=8
216 innodb_read_io_threads=8
217 innodb_purge_threads=4
218 innodb_page_cleaners=4
219 
220 #performance_schema
221 performance_schema=OFF
222 performance_schema_instrument='%=OFF'
223 
224 #单盘SAS/SATA --> 200
225 #SAS*12 RAID10 --> 2000
226 #SSD --> 10000-20000
227 #PCIe --> 50000
228 #调整刷新脏页的数量
229 #一次刷新2000个页到磁盘,SAS raid10建议2000,ssd建议1000,单盘建议200
230 innodb_io_capacity=200
231 innodb_io_capacity_max=400
232 #刷新脏页时,检查相邻页
233 innodb_flush_neighbors=1
234 
235 #打开计数器innodb monitor
236 innodb_monitor_enable="module_innodb"
237 innodb_monitor_enable="module_server"
238 innodb_monitor_enable="module_dml"
239 innodb_monitor_enable="module_ddl"
240 innodb_monitor_enable="module_trx"
241 innodb_monitor_enable="module_os"
242 innodb_monitor_enable="module_purge"
243 innodb_monitor_enable="module_log"
244 innodb_monitor_enable="module_lock"
245 innodb_monitor_enable="module_buffer"
246 innodb_monitor_enable="module_index"
247 innodb_monitor_enable="module_ibuf_system"
248 innodb_monitor_enable="module_buffer_page"
249 innodb_monitor_enable="module_adaptive_hash"
250 
251 [mysqld_safe]
252 log-error=/data/lib/mysql/logs/mysql_error.log
253 pid-file=/data/lib/mysql/run/mysqld.pid
254 
255 [mysqldump]
256 quick
257 max_allowed_packet=32M
258 
259 [xtrabackup]
260 socket=/data/lib/mysql/run/mysql.sock' > /data/lib/mysql/conf/my.cnf;
261 
262 chown -R mysql:mysql /data/lib/mysql;
263 chown -R mysql:mysql /data/logs/mysql;
264 
265 /data/logs/mysql/mysql-server/bin/mysqld --defaults-file=/data/lib/mysql/conf/my.cnf --basedir=/data/lib/mysql/ --datadir=/data/lib/mysql/data/ --user=mysql --initialize-insecure;
266 
267 echo "########################### install XtraBackup ###################################"
268 wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.20/binary/tarball/percona-xtrabackup-2.4.20-Linux-x86_64.el7.tar.gz;
269 
270 tar -xf percona-xtrabackup-2.4.20-Linux-x86_64.el7.tar.gz
271 mv percona-xtrabackup-2.4.20-Linux-x86_64 /data/lib/mysql/xtrabackup
272 
273 echo 'export XBK=/data/lib/mysql/xtrabackup/' >> /etc/profile.d/xbk.sh
274 echo 'export PATH=$XBK/bin:$PATH' >> /etc/profile.d/xbk.sh
275 source /etc/profile.d/xbk.sh
276 chown -R mysql:mysql /data/lib/mysql;
277 chown mysql:mysql /etc/profile.d/xbk.sh;
278 
279 xtrabackup --version
280 echo "########################### XtraBackup end #######################################"
281 
282 echo "set global validate_password_policy=0;set global validate_password_length=1;ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxx';"
283 
284 echo "[program:mysqld]
285 command=/data/logs/mysql/mysql-server/bin/mysqld --basedir=/data/lib/mysql --datadir=/data/lib/mysql/data --plugin-dir=/data/logs/mysql/mysql-server/lib/plugin --log-error=/data/logs/mysql/mysqld.log --pid-file=/data/lib/mysql/run/mysqld.pid --socket=/data/lib/mysql/run/mysql.sock
286 priority=99
287 user=mysql
288 directory=/data/tmp
289 autostart=true
290 autorestart=true
291 startsecs=3
292 startretries=999999
293 redirect_stderr=false
294 stdout_logfile=/data/logs/supervisord/mysqld.log" >> /data/etc/supervisor/conf.d/vanish.conf
295 
296 echo """
297 grant all on *.* to root@'localhost' identified by 'xxxxxx';
298 grant all on *.* to xxxx@'%' identified by 'xxxxxxxx';
299 
300 create user 'slave_name'@'x.x.x.%' identified by 'xxxxxxxx';
301 grant replication slave on *.* to slave_name@'x.x.x.%';
302 
303 #select Host,User,authentication_string from mysql.user;
304 #set password='';
305 #delete from mysql.user where user='xxxx' and Host='x.x.x.%';
306 #flush privileges;
307 """

 

posted @ 2023-05-16 14:45  shadown404  阅读(13)  评论(0编辑  收藏  举报