<code>cat</code> <code>mysql.sh</code>
<code>#!/bin/sh</code>
<code>#auto install mysql5.7.10</code>
<code> </code>
<code>#setting default directory</code>
<code>Port=$1</code>
<code>SoftDir=</code><code>"/opt/install"</code>
<code>tarbag=</code><code>"mysql-5.7.10-linux-glibc2.5-x86_64"</code>
<code>BaseDir=</code><code>"/opt/mysql"</code>
<code>DataDir=</code><code>"/opt/$Port"</code>
<code>mkdir</code> <code>-p </code><code>/usr/local/mysql/data</code>
<code>#remove before being installed mysql</code>
<code>function</code> <code>rmMysql() {</code>
<code> </code><code>yum -y erase mysql ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>yum -y erase mysql-server ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>ret=`rpm -aq | </code><code>grep</code> <code>-i </code><code>"mysql-5"</code> <code>| </code><code>wc</code> <code>-l`</code>
<code> </code><code>num=`rpm -aq | </code><code>grep</code> <code>-i </code><code>"mysql-server"</code> <code>| </code><code>wc</code> <code>-l`</code>
<code> </code><code>test</code> <code>$ret -</code><code>eq</code> <code>1 && </code><code>echo</code> <code>"mysql uninstall failed"</code> <code>&& </code><code>exit</code> <code>1</code>
<code> </code><code>test</code> <code>$num -</code><code>eq</code> <code>1 && </code><code>echo</code> <code>"mysql-server uninstall failed"</code> <code>&& </code><code>exit</code> <code>2</code>
<code>}</code>
<code>#libaio package is needed for mysql5.7.10</code>
<code>function</code> <code>chkEnv() {</code>
<code> </code><code>yum -y </code><code>install</code> <code>libaio ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>res=`rpm -aq|</code><code>grep</code> <code>libaio | </code><code>wc</code> <code>-l`</code>
<code> </code><code>test</code> <code>$res -</code><code>ne</code> <code>1 && </code><code>echo</code> <code>"libaio package install failed..."</code> <code>&& </code><code>exit</code> <code>3</code>
<code>#create mysql user and group, authorization, extract</code>
<code>function</code> <code>preInstall() {</code>
<code> </code><code>/usr/sbin/groupadd</code> <code>mysql</code>
<code> </code><code>/usr/sbin/useradd</code> <code>-r -g mysql -s </code><code>/bin/false</code> <code>mysql</code>
<code> </code><code>mkdir</code> <code>-p $BaseDir</code>
<code> </code><code>mkdir</code> <code>-p $DataDir</code><code>/data</code>
<code> </code><code>chown</code> <code>mysql.mysql $DataDir</code>
<code> </code><code>if</code> <code>test</code> <code>-f $SoftDir/$tarbag.</code><code>tar</code><code>.gz</code>
<code> </code><code>then</code>
<code> </code><code>cd</code> <code>$SoftDir && </code><code>tar</code> <code>-zxf $tarbag.</code><code>tar</code><code>.gz</code>
<code> </code><code>cd</code> <code>$SoftDir/$tarbag && </code><code>cp</code> <code>-r * $BaseDir</code>
<code> </code><code>echo</code> <code>ok</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>"$tarbag.tar.gz is not found..."</code>
<code> </code><code>exit</code> <code>10</code>
<code> </code><code>fi</code>
<code>function</code> <code>multPreInstall() {</code>
<code> </code><code>mkdir</code> <code>-p $DataDir</code><code>/data</code>
<code>function</code> <code>install_mysql() {</code>
<code> </code><code>#initialize mysql database</code>
<code> </code><code>$BaseDir</code><code>/bin/mysqld</code> <code>\</code>
<code> </code><code>--initialize \</code>
<code> </code><code>--user=mysql \</code>
<code> </code><code>--basedir=$BaseDir \</code>
<code> </code><code>--datadir=$DataDir</code><code>/data</code> <code>\</code>
<code> </code><code>--character-</code><code>set</code><code>-server=utf8mb4 \</code>
<code> </code><code>--collation-server=utf8mb4_general_ci \</code>
<code> </code><code>--initialize-insecure ></code><code>/dev/null</code> <code>2>&1</code>
<code>#get my.cnf and start/stop script, attention alter parameters by your envionment</code>
<code>function</code> <code>conf_mysql() {</code>
<code> </code><code>cp</code> <code>$SoftDir</code><code>/my</code><code>.cnf $DataDir</code>
<code> </code><code>cp</code> <code>$SoftDir</code><code>/mysql</code><code>.server $DataDir</code>
<code>/usr/bin/vim</code> <code>$DataDir</code><code>/my</code><code>.cnf<<EOF ></code><code>/dev/null</code> <code>2>&1</code>
<code>:%s</code><code>/3306/</code><code>$Port</code><code>/g</code>
<code>:wq</code>
<code>EOF</code>
<code> </code><code>sed</code> <code>-i </code><code>"s/port=3306/port=$Port/"</code> <code>$DataDir</code><code>/mysql</code><code>.server</code>
<code> </code><code>sed</code> <code>-i </code><code>"s%CmdPath=\"\"%CmdPath=\"${BaseDir}\/bin\"%"</code> <code>$DataDir</code><code>/mysql</code><code>.server</code>
<code> </code><code>sed</code> <code>-i </code><code>"s%mysql_sock=\"\"%mysql_sock=\"${DataDir}\/mysql.sock\"%"</code> <code>$DataDir</code><code>/mysql</code><code>.server</code>
<code> </code><code>chmod</code> <code>600 $DataDir</code><code>/my</code><code>.cnf</code>
<code> </code><code>chmod</code> <code>700 $DataDir</code><code>/mysql</code><code>.server</code>
<code> </code><code>$DataDir</code><code>/mysql</code><code>.server start ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>sleep</code> <code>60</code>
<code># ren=`netstat -natp|grep mysqld | grep "$1" | wc -l`</code>
<code> </code>
<code> </code><code>if</code> <code>test</code> <code>-e $DataDir</code><code>/mysql</code><code>.sock;</code><code>then</code>
<code> </code><code>echo</code> <code>"$DataDir/mysql.sock"</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[33;1mmysql install success...\033[0m"</code>
<code> </code><code>pro=`</code><code>grep</code> <code>$BaseDir </code><code>/root/</code><code>.bash_profile | </code><code>wc</code> <code>-l`</code>
<code> </code><code>if</code> <code>test</code> <code>"$pro"</code> <code>-</code><code>ne</code> <code>1;</code><code>then</code>
<code> </code><code># sed -i "s%PATH=\$PATH\:\$HOME\/bin%PATH=\$PATH\:\$HOME\/bin\:$BaseDir\/bin%" /root/.bash_profile</code>
<code> </code><code>sed</code> <code>-i </code><code>"s%PATH=\$PATH\:\$HOME\/bin%PATH=\$HOME\/bin\:$BaseDir\/bin%:\$PATH"</code> <code>/root/</code><code>.bash_profile</code>
<code> </code><code>source</code> <code>/root/</code><code>.bash_profile</code>
<code> </code><code>fi</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[31;1mmysql install failed...\033[0m"</code>
<code>if</code> <code>[[ </code><code>"$1"</code> <code>=~ ^[0-9]+$ ]]; </code><code>then</code>
<code> </code><code>inPort=`</code><code>netstat</code> <code>-natp | </code><code>grep</code> <code>"mysqld"</code> <code>| </code><code>grep</code> <code>"LISTEN"</code> <code>| </code><code>awk</code> <code>'{print $4}'</code> <code>| </code><code>cut</code> <code>-b 4-`</code>
<code> </code><code>if</code> <code>test</code> <code>! -z </code><code>"$inPort"</code><code>;</code><code>then</code>
<code> </code><code>for</code> <code>myPort </code><code>in</code> <code>$inPort</code>
<code> </code><code>do</code>
<code> </code><code>if</code> <code>test</code> <code>"$myPort"</code> <code>-</code><code>eq</code> <code>"$1"</code><code>;</code><code>then</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[33;1m$1 instance has already existed...\033[0m"</code>
<code> </code><code>exit</code> <code>1</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1m===========================================\033[0m"</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1mStarting create new instance $1\033[0m"</code>
<code> </code><code>multPreInstall</code>
<code> </code><code>install_mysql</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1mconfiguration and starting $1 instance...\033[0m"</code>
<code> </code><code>conf_mysql</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1mremove before being installed mysql...\033[0m"</code>
<code> </code><code>rmMysql</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1minstall libaio package...\033[0m"</code>
<code> </code><code>chkEnv</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1mget ready install envionment...\033[0m"</code>
<code> </code><code>preInstall</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1mStarting install mysql ver5.7.10...\033[0m"</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[32;1mconfiguration mysql and starting mysql...\033[0m"</code>
<code> </code><code>fi</code>
<code>else</code>
<code> </code><code>echo</code> <code>"Usage: $0 Port (Port is inteager)"</code>
<code>fi</code>
<code>source</code> <code>/root/</code><code>.bash_profile</code>
<code>cat</code> <code>mysql.server</code>
<code> </code>
<code># This is an interactive program, we needthe current locale </code>
<code>[ -f </code><code>/etc/profile</code><code>.d</code><code>/lang</code><code>.sh ] && . </code><code>/etc/profile</code><code>.d</code><code>/lang</code><code>.sh </code>
<code># We can't Japanese on normal console atboot time, so force. </code>
<code>if</code> <code>[ </code><code>"$LANG"</code> <code>= </code><code>"ja"</code> <code>-o </code><code>"$LANG"</code> <code>= </code><code>"ja_JP.eucJP"</code> <code>]; </code><code>then</code>
<code> </code><code>if</code> <code>[ </code><code>"$TERM"</code> <code>= </code><code>"linux"</code> <code>] ; </code><code>then</code>
<code> </code><code>LANG=C </code>
<code> </code>
<code># Source function library. </code>
<code>. </code><code>/etc/init</code><code>.d</code><code>/functions</code>
<code>#init</code>
<code>port=3306</code>
<code>mysql_user=</code><code>"root"</code>
<code>mysql_pwd=</code><code>""</code>
<code>CmdPath=</code><code>""</code>
<code>mysql_sock=</code><code>""</code>
<code>#startup function</code>
<code>function_start_mysql()</code>
<code>{</code>
<code> </code><code>if</code> <code>[ ! -e </code><code>"$mysql_sock"</code> <code>];</code><code>then</code>
<code> </code><code>printf</code> <code>"Starting MySQL...\n"</code>
<code> </code><code>${CmdPath}</code><code>/mysqld_safe</code> <code>--defaults-</code><code>file</code><code>=</code><code>/opt/</code><code>${port}</code><code>/my</code><code>.cnf --ledir=${CmdPath} 2>&1 > </code><code>/dev/null</code> <code>&</code>
<code> </code><code>sleep</code> <code>2</code>
<code> </code><code>else</code>
<code> </code><code>printf</code> <code>"MySQL is running...\n"</code>
<code> </code><code>exit</code>
<code> </code><code>fi</code>
<code>#stop function</code>
<code>function_stop_mysql()</code>
<code> </code><code>printf</code> <code>"MySQL is stopped...\n"</code>
<code> </code><code>exit</code>
<code> </code><code>printf</code> <code>"Stoping MySQL...\n"</code>
<code> </code><code>${CmdPath}</code><code>/mysqladmin</code> <code>-u ${mysql_user} -p${mysql_pwd} -S $mysql_sock </code><code>shutdown</code>
<code> </code><code>sleep</code> <code>2</code>
<code>#restart function</code>
<code>function_restart_mysql()</code>
<code> </code><code>printf</code> <code>"Restarting MySQL...\n"</code>
<code> </code><code>function_stop_mysql</code>
<code> </code><code>sleep</code> <code>2</code>
<code> </code><code>function_start_mysql</code>
<code>case</code> <code>$1 </code><code>in</code>
<code>start)</code>
<code>;;</code>
<code>stop)</code>
<code>restart)</code>
<code> </code><code>function_restart_mysql</code>
<code>status)</code>
<code> </code><code>status mysqld</code>
<code>*)</code>
<code> </code><code>printf</code> <code>"Usage: /opt/${port}/mysql {start|stop|restart|status}\n"</code>
<code>esac</code>
<code>cat</code> <code>my.cnf</code>
<code>[client]</code>
<code>port = 3306</code>
<code>socket = </code><code>/opt/3306/mysql</code><code>.sock</code>
<code>character-</code><code>set</code><code>-server = utf8mb4</code>
<code>default-character-</code><code>set</code> <code>= utf8mb4</code>
<code>[mysql]</code>
<code>no-auto-rehash</code>
<code>[mysqld]</code>
<code>user = mysql</code>
<code>port = 3306</code>
<code>character-</code><code>set</code><code>-client-handshake = FALSE</code>
<code>collation-server = utf8mb4_unicode_ci</code>
<code>init_connect=</code><code>'SET NAMES utf8mb4'</code>
<code>#show_compatibility_56 = 1</code>
<code>socket = </code><code>/opt/3306/mysql</code><code>.sock</code>
<code>basedir = </code><code>/opt/mysql</code>
<code>datadir = </code><code>/opt/3306/data</code>
<code>explicit_defaults_for_timestamp = </code><code>true</code>
<code>skip-ssl</code>
<code>secure-</code><code>file</code><code>-priv = NULL</code>
<code>lower_case_table_names = 1</code>
<code>back_log = 300</code>
<code>max_connections = 3000</code>
<code>max_connect_errors = 100</code>
<code>table_open_cache = 4096</code>
<code>external-locking = FALSE</code>
<code>max_allowed_packet = 64M</code>
<code>sort_buffer_size = 16M</code>
<code>join_buffer_size = 16M</code>
<code>thread_cache_size = 16</code>
<code>query_cache_size = 128M</code>
<code>query_cache_limit = 4M</code>
<code>ft_min_word_len = 8</code>
<code>thread_stack = 512K</code>
<code>transaction_isolation = REPEATABLE-READ</code>
<code>tmp_table_size = 128M</code>
<code>max_heap_table_size = 128M</code>
<code>###*** slow query parameters</code>
<code>long_query_time = 6</code>
<code>slow_query_log</code>
<code>slow_query_log_file = </code><code>/opt/3306/slow</code><code>.log</code>
<code>###*** binlog parameters</code>
<code>log-bin = </code><code>/opt/3306/mysql-bin</code>
<code>binlog_cache_size = 4M</code>
<code>max_binlog_cache_size = 256M</code>
<code>max_binlog_size = 32M</code>
<code>#binlog_format = MIXED</code>
<code>binlog_format = row</code>
<code>expire_logs_days = 7</code>
<code>###*** relay-log parameters</code>
<code>#relay-log = /opt/3307/relay-bin</code>
<code>#relay-log-info-file = /opt/3307/relay-log.info</code>
<code>#master-info-repository = table</code>
<code>#relay-log-info-repository = table</code>
<code>#relay-log-recovery = 1</code>
<code>#*** MyISAM parameters</code>
<code>key_buffer_size = 16M</code>
<code>read_buffer_size = 1M</code>
<code>read_rnd_buffer_size = 16M</code>
<code>bulk_insert_buffer_size = 1M</code>
<code>#skip-name-resolve</code>
<code>###*** master-slave replication parameters</code>
<code>server-</code><code>id</code> <code>= 105</code>
<code>slave-skip-errors = all</code>
<code>#*** Innodb storage engine parameters</code>
<code>innodb_buffer_pool_size = 2G</code>
<code>innodb_data_file_path = ibdata1:10M:autoextend</code>
<code>#innodb_file_io_threads = 8</code>
<code>innodb_thread_concurrency = 16</code>
<code>innodb_flush_log_at_trx_commit = 2</code>
<code>innodb_log_buffer_size = 16M</code>
<code>innodb_log_file_size = 512M</code>
<code>innodb_log_files_in_group = 3</code>
<code>innodb_max_dirty_pages_pct = 90</code>
<code>innodb_lock_wait_timeout = 120</code>
<code>innodb_file_per_table = on</code>
<code>sql_mode=</code><code>'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'</code>
<code>[mysqldump]</code>
<code>quick</code>
<code>max_allowed_packet = 32M</code>
<code>[myisamchk]</code>
<code>key_buffer = 16M</code>
<code>read_buffer = 8M</code>
<code>write_buffer = 8M</code>
<code>[mysqld_safe]</code>
<code>open</code><code>-files-limit = 8192</code>
<code>log-error=</code><code>/opt/3306/mysql_3306</code><code>.err</code>
<code>pid-</code><code>file</code><code>=</code><code>/opt/3306/mysqld</code><code>.pid</code>
<code>MySQL版本 mysql-5.7.10-linux-glibc2.5-x86_64.</code><code>tar</code><code>.gz</code>
使用这个脚本注意的地方
/etc/my.cnf必须要移除掉
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1854369,如需转载请自行联系原作者