<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        分享MySQL的自動化安裝部署的方法

        來源:懂視網 責編:小采 時間:2020-11-09 21:02:24
        文檔

        分享MySQL的自動化安裝部署的方法

        分享MySQL的自動化安裝部署的方法:有過MySQL運維的人應該都清楚,線上的MySQL一般都采用源碼編譯,因為這樣才可以根據企業的各自需要選擇要編譯的功能,雖然MySQL的源碼編譯挺簡單的,但是試想一下,如果你有幾百臺服務器同時要安裝MySQL,難道你還一臺臺去手動編譯、編寫配置文件嗎?這顯然太
        推薦度:
        導讀分享MySQL的自動化安裝部署的方法:有過MySQL運維的人應該都清楚,線上的MySQL一般都采用源碼編譯,因為這樣才可以根據企業的各自需要選擇要編譯的功能,雖然MySQL的源碼編譯挺簡單的,但是試想一下,如果你有幾百臺服務器同時要安裝MySQL,難道你還一臺臺去手動編譯、編寫配置文件嗎?這顯然太

        有過MySQL運維的人應該都清楚,線上的MySQL一般都采用源碼編譯,因為這樣才可以根據企業的各自需要選擇要編譯的功能,雖然MySQL的源碼編譯挺簡單的,但是試想一下,如果你有幾百臺服務器同時要安裝MySQL,難道你還一臺臺去手動編譯、編寫配置文件嗎?這顯然太低效了,本文討論MySQL的自動化安裝部署。

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

        我們要根據MySQL的源碼編譯符合企業需求的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

        在上面我們獲取了源碼,并在源碼主目錄下創建rpm目錄,接著我們在該目錄下創建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 CXXFLAGS

        cmake .                                                  \
          -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
        有了這個spec文件之后,就可以執行如下命令生成我們自己的RPM包:
        rpmbuild -bb ./mysql.spec

        2、編寫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=0

        log_slow_admin_statements=1
        log_warnings=1
        long_query_time=1
        slow_query_log=1
        general_log=0

        query_cache_type=0
        query_cache_limit=1M
        query_cache_min_res_unit=1K

        table_definition_cache=65536

        thread_stack=512K
        thread_cache_size=256
        read_rnd_buffer_size=128K
        sort_buffer_size=256K
        join_buffer_size=128K
        read_buffer_size=128K

        port=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

        細心的讀者應該會注意在,在my.cnf的末尾在server id上留了空白,在后面的shell腳本會動態加上,這是因為在一個企業內部的所有MySQL的server id必須保持全局一致性,這樣在主備復制時才不會導致混亂。
        其實如果想把這個腳本寫的更通用,完全可以把更多的參數留白,如port、datadir、內存相關參數等,這里我只是以server id為例,拋磚引玉。

        3、準備MySQL數據目錄模板

        你得事先準備一臺MySQL,可以根據自己的需求,把通用性的東西放在上面(如賬戶等),下面是一個最簡單的已安裝好的MySQL的數據目錄結構:

        [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),然后以這個為模板解壓至新裝MySQL實例的數據目錄下即可。
        4、編寫自動化安裝部署腳本

        在運行這個腳本之前,我們必須得把前面幾部制作的rpm包、my.cnf模板和數據目錄模板放到一個固定的地方,本例中是放在企業內部的ftp上。

        MySQL自動化安裝部署腳本(命名為: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/mysql

        tar 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

        您可能感興趣的文章:

      1. 具有負載均衡功能的MySQL服務器集群部署及實現
      2. Windows下部署Apache+PHP+MySQL運行環境實戰
      3. MySQL高可用MMM方案安裝部署分享
      4. MySQL下高可用故障轉移方案MHA的超級部署教程
      5. 在Linux系統上部署Apache+Python+Django+MySQL環境
      6. MySQL Cluster集群的初級部署教程
      7. PHP的Laravel框架結合MySQL與Redis數據庫的使用部署
      8. 快速實現MySQL的部署以及一機多實例部署
      9. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        分享MySQL的自動化安裝部署的方法

        分享MySQL的自動化安裝部署的方法:有過MySQL運維的人應該都清楚,線上的MySQL一般都采用源碼編譯,因為這樣才可以根據企業的各自需要選擇要編譯的功能,雖然MySQL的源碼編譯挺簡單的,但是試想一下,如果你有幾百臺服務器同時要安裝MySQL,難道你還一臺臺去手動編譯、編寫配置文件嗎?這顯然太
        推薦度:
        標簽: 安裝 配置 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲黄色免费网站| 国产亚洲人成网站在线观看| 亚洲成aⅴ人在线观看| 国产一精品一AV一免费| 亚洲AV永久青草无码精品| a级在线免费观看| 久久久久久精品成人免费图片| 拨牐拨牐x8免费| 亚洲精品理论电影在线观看| 影音先锋在线免费观看| 亚洲精品中文字幕| 亚洲免费网站观看视频| 亚洲不卡av不卡一区二区| 免费精品一区二区三区第35| 免费欧洲美女牲交视频| 99ri精品国产亚洲| 99久久国产热无码精品免费| 亚洲人成网亚洲欧洲无码久久 | 国产成人无码免费视频97| 亚洲中文字幕无码一区二区三区 | 久久伊人久久亚洲综合| 亚洲AV无码之国产精品| 国产成人亚洲综合无码| 国产免费久久久久久无码| 国产嫩草影院精品免费网址| 无套内射无矿码免费看黄| 永久亚洲成a人片777777| 色噜噜噜噜亚洲第一| 亚洲日韩av无码| 91在线视频免费看| 黄色a级片免费看| 精品亚洲国产成AV人片传媒| 99久久免费精品国产72精品九九 | 免费人成网站在线观看10分钟| 亚洲国产精品无码专区影院| 日韩精品无码免费视频| 亚洲精品私拍国产福利在线| 国产精品色午夜免费视频| 人人玩人人添人人澡免费| 亚洲午夜无码久久久久小说| 一二三四在线观看免费高清中文在线观看|