自动化部署MySQL 5.6 步骤

来源:互联网 发布:sybase数据库建表语句 编辑:程序博客网 时间:2024/05/24 07:19


准备工作

 

首先需要搭建ftpserver

yum install vsftpd service vsftpd start


这样ftp服务就起来了,这里只是简单的使用,所以没有使用配置文件。这样我们只要将需要的文件置于/var/ftp/pub/文件夹下,匿名用户就可以copy文件到本机了。

 

安装rpm-build

 

build需要用到rpm-build,这里简单安装即可

yum install rpm-build

 

下面开始rpm打包


mget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.21.tar.gzcd /u01/mysql-5.6.21mkdir rpmcd rpm 


修改mysql.spec


Name: mysql-rpmVersion:5.6.21Release: renfengjunLicense: GPLURL: http://dev.mysql.com/Group: applications/databaseBuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-rootBuildRequires: cmakePackager: dexter.ren.jl@gmail.comAutoreq: noprefix: /u01/mysqlSummary: mysql-5.6.21.tar.gz %descriptionThe MySQL(TM) software delivers a very fast,multi-threaded, multi-user,and robust SQL (Structured Query Language)database server. MySQL Serveris intended for mission-critical, heavy-loadproduction systems as wellas for embedding into mass-deployed software. %define MYSQL_USER mysql%define MYSQL_GROUP mysql%define __os_install_post %{nil} %buildcd $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` %installcd $OLDPWD/../make DESTDIR=$RPM_BUILD_ROOT install %cleanrm -rf $RPM_BUILD_ROOT %files%defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})%attr(755, %{MYSQL_USER}, %{MYSQL_GROUP})%{prefix}/* %premkdir -p /u01/mysql/datamkdir -p /u01/mysql/runmkdir -p /u01/mysql/loggroupadd mysqluseradd -g mysql mysqlchown -R mysql:mysql /u01/mysql/datachown -R mysql:mysql /u01/mysql/logchown -R mysql:mysql /u01/mysql/runecho "exportPATH=$PATH:/u01/mysql/bin" >> /home/mysql/.bash_profile %postln -s %{prefix}/lib %{prefix}/lib64cp /u01/mysql/support-files/mysql.server/etc/init.d/mysqlchkconfig mysql on  %preunchkconfig --del mysqlrm -rf /u01userdel mysqlrm -rf /var/spool/mail/mysqlrm -rf /etc/init.d/mysqlrm -rf /home/mysql %changelog 


执行打包命令

rpmbuild -bb ./mysql.spec

 

输出:

 

Requires(pre): /bin/shRequires(post): /bin/shRequires(preun): /bin/shChecking for unpackaged file(s):/usr/lib/rpm/check-files /var/tmp/mysql-rpm-5.6.21-renfengjun-rootwarning: Could not canonicalize hostname:centos511Wrote:/usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpmExecuting(%clean): /bin/sh -e /var/tmp/rpm-tmp.62530+ umask 022+ cd /usr/src/redhat/BUILD+ rm -rf/var/tmp/mysql-rpm-5.6.21-renfengjun-root+ exit 0

生成的rpm包在这里:

/usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpm

 

打包数据模板

 

打包的时候记得关闭mysql。这里写了一点测试数据:

mysql> select * from dexdb.t ;+------+------------+| id   |name       |+------+------------+|    1 |renfengjun |+------+------------+1 row in set (0.00 sec)


数据模板打包,记得ibdata1打包上

cd /u01/mysql/data

tar cf data.tar ibdata1 mysql/ dexdb/performance_schema/ test/

 

修改my.cnf

my.cnf文件内容:

[mysqld_safe]pid-file=/u01/mysql/run/mysqld.pid#malloc-lib=/u01/mysql/lib/libjemalloc.so [mysql]port=3306prompt=\\u@\\d \\r:\\m:\\s>default-character-set=gbkno-auto-rehash [client]port=3306socket=/u01/mysql/run/mysql.sock [mysqld]#dirbasedir=/u01/mysqldatadir=/u01/mysql/datatmpdir=/tmplc_messages_dir=/u01/mysql/sharelog-error=/u01/mysql/log/alert.logslow_query_log_file=/u01/mysql/log/slow.loggeneral_log_file=/u01/mysql/log/general.logsocket=/u01/mysql/run/mysql.sock #innodbinnodb_data_home_dir=/u01/mysql/datainnodb_log_group_home_dir=/u01/mysql/datainnodb_data_file_path=ibdata1:12Minnodb_buffer_pool_size=10Ginnodb_buffer_pool_instances=4innodb_log_files_in_group=2innodb_log_file_size=1Ginnodb_log_buffer_size=200Minnodb_flush_log_at_trx_commit=1innodb_additional_mem_pool_size=20Minnodb_max_dirty_pages_pct=60innodb_io_capacity=1000innodb_thread_concurrency=16innodb_read_io_threads=8innodb_write_io_threads=8innodb_open_files=60000innodb_file_format=Barracudainnodb_file_per_table=1innodb_flush_method=O_DIRECTinnodb_change_buffering=insertsinnodb_adaptive_flushing=1innodb_old_blocks_time=1000innodb_stats_on_metadata=0innodb_read_ahead=0innodb_use_native_aio=0innodb_lock_wait_timeout=5innodb_rollback_on_timeout=0innodb_purge_threads=1innodb_strict_mode=1transaction-isolation=READ-COMMITTED #myisamkey_buffer=64Mmyisam_sort_buffer_size=64Mconcurrent_insert=2delayed_insert_timeout=300 #replicationmaster-info-file=/u01/mysql/log/master.inforelay-log=/u01/mysql/log/relaylogrelay_log_info_file=/u01/mysql/log/relay-log.inforelay-log-index=/u01/mysql/log/mysqld-relay-bin.indexslave_load_tmpdir=/u01/mysql/tmpslave_type_conversions="ALL_NON_LOSSY"slave_net_timeout=4skip-slave-startsync_master_info=1000sync_relay_log_info=1000 #binloglog-bin=/u01/mysql/log/mysql-bin#server_id=2552763370binlog_cache_size=32Kmax_binlog_cache_size=2Gmax_binlog_size=500Mbinlog-format=ROWsync_binlog=1000log-slave-updates=1expire_logs_days=0 #serverdefault-storage-engine=INNODBcharacter-set-server=gbklower_case_table_names=1skip-external-lockingopen_files_limit=65536safe-user-createlocal-infile=1#sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE"performance_schema=0 log_slow_admin_statements=1log_warnings=1long_query_time=1slow_query_log=1general_log=0 query_cache_type=0query_cache_limit=1Mquery_cache_min_res_unit=1K table_definition_cache=65536#table_cache=65536 thread_stack=512Kthread_cache_size=256read_rnd_buffer_size=128Ksort_buffer_size=256Kjoin_buffer_size=128Kread_buffer_size=128K port=3306skip-name-resolveskip-sslmax_connections=4500max_user_connections=4000max_connect_errors=65536max_allowed_packet=128Mconnect_timeout=8net_read_timeout=30net_write_timeout=60back_log=1024

serverid在自动化安装脚本中自动生成。

 

将上面的data.tar 、my.cnf、生成的rpm包copy到ftp的pub目录下

/var/ftp/pub/

 

自动化安装脚本

auto_install_mysql.sh:

#!/bin/shyum install -y cmake gcc g++ bisonncurses-devel zlib ftp -n<<EOFopen 192.168.0.33user anonymous dexterbinarycd pubpromptmget *EOF rpm -ivh mysql-rpm-5.6.21-renfengjun.x86_64.rpmtar -xvf data.tar -C /u01/mysql/data/chown -R mysql:mysql /u01/mysql/ unique_id=`date "+%Y%m%d%M%S"`echo 'server_id='$unique_id >> my.cnf cp my.cnf /u01/mysql/

这里可以配置局域网yum源,方便依赖包的安装,详细见下面的链接

《Centos 使用httpd配置局域网YUM源》

http://blog.csdn.net/renfengjun/article/details/51096111


执行远程自动安装命令

 

执行远程拷贝(dcli命令是我从一体机里面拿出来的脚本,py编写,其实和scp差不多,有需要的可以发邮箱)

如果批量的安装,需要先使用-k选项初始化一下ssh。

 

将脚本copy到远程

[root@centos511 ~]# ./dcli -l root -c192.168.0.36 -f ./auto_install_mysql.sh

 

执行远程命令,也可以放在后台

[root@centos511 ~]#./dcli -l root -c192.168.0.36 /root/ auto_install_mysql.sh

 

输出:

 

[[root@centos511 ~]# ./dcli -l root -c192.168.0.36 /root/get_rpm.shroot@192.168.0.36's password:192.168.0.36: Address 192.168.0.36 maps tolocalhost, but this does not map back to the address - POSSIBLE BREAK-INATTEMPT!192.168.0.36: Loaded plugins: fastestmirror,security192.168.0.36: Loading mirror speeds from cachedhostfile192.168.0.36: * base: mirrors.btte.net192.168.0.36: * extras: mirrors.btte.net192.168.0.36: * updates: mirrors.yun-idc.com192.168.0.36: Setting up Install Process192.168.0.36: Packagecmake-2.6.4-5.el5.4.x86_64 already installed and latest version192.168.0.36: Package gcc-4.1.2-55.el5.x86_64already installed and latest version192.168.0.36: No package g++ available.192.168.0.36: Package bison-2.3-2.1.x86_64already installed and latest version192.168.0.36: Packagencurses-devel-5.5-24.20060715.x86_64 already installed and latest version192.168.0.36: Packagencurses-devel-5.5-24.20060715.i386 already installed and latest version192.168.0.36: Package zlib-1.2.3-7.el5.x86_64already installed and latest version192.168.0.36: Package zlib-1.2.3-7.el5.i386already installed and latest version192.168.0.36: Nothing to do192.168.0.36: Please login with USER and PASS.192.168.0.36: Please login with USER and PASS.192.168.0.36: KERBEROS_V4 rejected as anauthentication type192.168.0.36: Interactive mode off.192.168.0.36: Preparing...               ##################################################192.168.0.36: mysql-rpm                  ##################################################.......


结束。

 

验证一下

 

[root@study2 ~]# service mysql startStarting MySQL.......................[  OK  ]  [root@study2 ~]# su - mysqlmys[mysql@study2 ~]$ mysqlWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.21-r5436-log Sourcedistribution Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved. Oracle is a registered trademark of OracleCorporation and/or itsaffiliates. Other names may be trademarks oftheir respectiveowners. Type 'help;' or '\h' for help. Type '\c' toclear the current input statement. root@(none) 12:29:11>show databases ;+--------------------+| Database           |+--------------------+| information_schema || dexdb              || mysql              || performance_schema || test               |+--------------------+5 rows in set (0.37 sec) root@(none) 12:29:14>use dexdb ;Database changedroot@dexdb 12:29:17>select * from t ;+------+------------+| id   |name       |+------+------------+|    1 |renfengjun |+------+------------+1 row in set (0.19 sec) root@dexdb 12:29:19>quitBye [root@study2 ~]# service mysql stopShutting down MySQL.[  OK  ]


比较粗糙,还有需要改进的地方。慢慢完善吧。

 


1 0
原创粉丝点击