日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

[MySQL] MySQL的自己主动化安装部署

發(fā)布時(shí)間:2025/4/9 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [MySQL] MySQL的自己主动化安装部署 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有過(guò)MySQL運(yùn)維的人應(yīng)該都清楚,線上的MySQL一般都採(cǎi)用源代碼編譯,由于這樣才干夠依據(jù)企業(yè)的各自須要選擇要編譯的功能,盡管MySQL的源代碼編譯挺簡(jiǎn)單的,可是試想一下,假設(shè)你有幾百臺(tái)server同一時(shí)候要安裝MySQL,難道你還一臺(tái)臺(tái)去手動(dòng)編譯、編寫(xiě)配置文件嗎?這顯然太低效了,本文討論MySQL的自己主動(dòng)化安裝部署。

1、制作符合自己需求的RPM包

我們要依據(jù)MySQL的源代碼編譯符合企業(yè)需求的RPM包,源代碼獲取命令例如以下: wget http://downloads.mysql.com/archives/get/file/mysql-5.6.16.tar.gz tar -zxvf mysql-5.6.16.tar.gz cd mysql-5.6.16 mkdir rpm cd rpm 在上面我們獲取了源代碼,并在源代碼主文件夾下創(chuàng)建rpm文件夾,接著我們?cè)谠撐募A下創(chuàng)建mysql.spec文件: Name: mysql Version:5.6.16 Release: guahao License: GPL URL: http://downloads.mysql.com/archives/get/file/mysql-5.6.16.tar.gz Group: applications/database BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: cmake Packager: zhuxj@guahao.com Autoreq: no prefix: /opt/mysql Summary: MySQL 5.6.16%description The MySQL(TM) software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software.%define MYSQL_USER mysql %define MYSQL_GROUP mysql %define __os_install_post %{nil}%build cd $OLDPWD/../ CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing" CXX=g++ CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing" export CFLAGS CXX CXXFLAGScmake . \-DSYSCONFDIR:PATH=%{prefix} \-DCMAKE_INSTALL_PREFIX:PATH=%{prefix} \-DCMAKE_BUILD_TYPE:STRING=Release \-DENABLE_PROFILING:BOOL=ON \-DWITH_DEBUG:BOOL=OFF \-DWITH_VALGRIND:BOOL=OFF \-DENABLE_DEBUG_SYNC:BOOL=OFF \-DWITH_EXTRA_CHARSETS:STRING=all \-DWITH_SSL:STRING=bundled \-DWITH_UNIT_TESTS:BOOL=OFF \-DWITH_ZLIB:STRING=bundled \-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \-DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \-DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON \-DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON \-DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_EXTRA_CHARSETS=all \-DENABLED_LOCAL_INFILE:BOOL=ON \-DWITH_EMBEDDED_SERVER=0 \-DINSTALL_LAYOUT:STRING=STANDALONE \-DCOMMUNITY_BUILD:BOOL=ON \-DMYSQL_SERVER_SUFFIX='-r5436';make -j `cat /proc/cpuinfo | grep processor| wc -l`%install cd $OLDPWD/../ make DESTDIR=$RPM_BUILD_ROOT install%clean rm -rf $RPM_BUILD_ROOT%files %defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP}) %attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{prefix}/*%pre%post ln -s %{prefix}/lib %{prefix}/lib64%preun%changelog 有了這個(gè)spec文件之后,就能夠運(yùn)行例如以下命令生成我們自己的RPM包: rpmbuild -bb ./mysql.spec

2、編寫(xiě)my.cnf模板

my.cnf模板例如以下: [mysqld_safe] pid-file=/opt/mysql/run/mysqld.pid[mysql] prompt=\\u@\\d \\r:\\m:\\s> default-character-set=gbk no-auto-rehash[client] socket=/opt/mysql/run/mysql.sock[mysqld] #dir basedir=/opt/mysql datadir=/data/mysql/data tmpdir=/data/mysql/tmp log-error=/data/mysql/log/alert.log slow_query_log_file=/data/mysql/log/slow.log general_log_file=/data/mysql/log/general.log socket=/opt/mysql/run/mysql.sock#innodb innodb_data_home_dir=/data/mysql/data innodb_log_group_home_dir=/data/mysql/data innodb_data_file_path=ibdata1:2G;ibdata2:16M:autoextend innodb_buffer_pool_size=10G innodb_buffer_pool_instances=4 innodb_log_files_in_group=4 innodb_log_file_size=1G innodb_log_buffer_size=200M innodb_flush_log_at_trx_commit=1 innodb_additional_mem_pool_size=20M innodb_max_dirty_pages_pct=60 innodb_io_capacity=200 innodb_thread_concurrency=32 innodb_read_io_threads=8 innodb_write_io_threads=8 innodb_open_files=60000 innodb_file_format=Barracuda innodb_file_per_table=1 innodb_flush_method=O_DIRECT innodb_change_buffering=all innodb_adaptive_flushing=1 innodb_old_blocks_time=1000 innodb_stats_on_metadata=0 innodb_read_ahead=0 innodb_use_native_aio=0 innodb_lock_wait_timeout=50 innodb_rollback_on_timeout=0 innodb_purge_threads=1 innodb_strict_mode=1 transaction-isolation=READ-COMMITTED#myisam key_buffer_size=100M myisam_sort_buffer_size=64M concurrent_insert=2 delayed_insert_timeout=300#replication master-info-file=/data/mysql/log/master.info relay-log=/data/mysql/log/mysql-relay relay_log_info_file=/data/mysql/log/mysql-relay.info relay-log-index=/data/mysql/log/mysql-relay.index slave_load_tmpdir=/data/mysql/tmp slave_type_conversions="ALL_NON_LOSSY" slave_net_timeout=4 skip-slave-start sync_master_info=1000 sync_relay_log_info=1000#binlog log-bin=/data/mysql/log/mysql-bin server_id=2552763370 binlog_cache_size=32K max_binlog_cache_size=2G max_binlog_size=500M binlog_format=ROW sync_binlog=1000 log-slave-updates=1 expire_logs_days=0#server default-storage-engine=INNODB character-set-server=gbk lower_case_table_names=1 skip-external-locking open_files_limit=65536 safe-user-create local-infile=1 performance_schema=0log_slow_admin_statements=1 log_warnings=1 long_query_time=1 slow_query_log=1 general_log=0query_cache_type=0 query_cache_limit=1M query_cache_min_res_unit=1Ktable_definition_cache=65536thread_stack=512K thread_cache_size=256 read_rnd_buffer_size=128K sort_buffer_size=256K join_buffer_size=128K read_buffer_size=128Kport=3306 skip-name-resolve skip-ssl max_connections=4500 max_user_connections=4000 max_connect_errors=65536 max_allowed_packet=128M connect_timeout=8 net_read_timeout=30 net_write_timeout=60 back_log=1024#server id 細(xì)心的讀者應(yīng)該會(huì)注意在,在my.cnf的末尾在server id上留了空白,在后面的shell腳本會(huì)動(dòng)態(tài)加上,這是由于在一個(gè)企業(yè)內(nèi)部的全部MySQL的server id必須保持全局一致性,這樣在主備復(fù)制時(shí)才不會(huì)導(dǎo)致混亂。 事實(shí)上假設(shè)想把這個(gè)腳本寫(xiě)的更通用,全然能夠把很多其它的參數(shù)留白,如port、datadir、內(nèi)存相關(guān)參數(shù)等,這里我僅僅是以server id為例,拋磚引玉。

3、準(zhǔn)備MySQL數(shù)據(jù)文件夾模板

你得事先準(zhǔn)備一臺(tái)MySQL,能夠依據(jù)自己的需求,把通用性的東西放在上面(如賬戶(hù)等),以下是一個(gè)最簡(jiǎn)單的已安裝好的MySQL的數(shù)據(jù)文件夾結(jié)構(gòu): [root@lx25 mysql]# ls -l total 12 drwxr-xr-x 5 mysql mysql 4096 Jul 2 09:26 data drwxr-xr-x 2 mysql mysql 4096 Jul 1 18:21 log drwxr-xr-x 2 mysql mysql 4096 Jul 2 09:26 tmp [root@lx25 mysql]# cd data [root@lx25 data]# ls -l total 6314044 drwx------ 2 mysql mysql 4096 Jul 1 17:17 mysql drwx------ 2 mysql mysql 4096 Jul 1 17:17 performance_schema drwx------ 2 mysql mysql 4096 Jul 1 17:17 test 把該文件夾用tar打包(命名為data.tar),然后以這個(gè)為模板解壓至新裝MySQL實(shí)例的數(shù)據(jù)文件夾下就可以。

4、編寫(xiě)自己主動(dòng)化安裝部署腳本

在執(zhí)行這個(gè)腳本之前,我們必須得把前面幾部制作的rpm包、my.cnf模板和數(shù)據(jù)文件夾模板放到一個(gè)固定的地方,本例中是放在企業(yè)內(nèi)部的ftp上。 MySQL自己主動(dòng)化安裝部署腳本(命名為:mysql_install.sh)例如以下: #!/bin/sh#Step 1: Prepare yum install cmake gcc g++ bison ncurses-devel zlib groupadd mysql useradd -g mysql mysql#Step 2: Get Source ftp -n<<EOF open 10.10.100.254 user zhuxianjie zxj321 binary cd mysql prompt mget * EOF#Step 3: Install unique_id=`date "+%Y%m%d%M%S"` echo 'server_id='$unique_id >> my.cnf rpm -ivh mysql-5.6.16-guahao.x86_64.rpm cp my.cnf /opt/mysql chown -R mysql:mysql /opt/mysqltar xvf data.tar -C /data chown -R mysql:mysql /data/mysql#step 4: Start MySQL cp /opt/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig mysqld on/etc/init.d/mysqld start

轉(zhuǎn)載于:https://www.cnblogs.com/yxwkf/p/3849068.html

總結(jié)

以上是生活随笔為你收集整理的[MySQL] MySQL的自己主动化安装部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。