准备工作首先需要搭建ftpserver?123yum install vsftpd service vsftpd start这样ftp服务就起来了,这里只是简单的使用,所以没有使用配置文件。这样我们只要将需要的文件置于/var/ftp/pub/文件夹下,匿名用户就可以copy文件到本机了。安装rpm-buildbuild需要用到rpm-build,这里简单安装即可?1yum install rpm-build下面开始rpm打包?1234mgethttp://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.21.tar.gzcd /u01/mysql-5.6.21mkdir rpmcd rpm修改mysql.spec?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495Name: 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,androbust SQL (Structured Query Language)databaseserver. MySQL Serverisintendedformission-critical, heavy-loadproduction systemsaswellasforembeddingintomass-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 mysqlon %preunchkconfig--del mysqlrm -rf /u01userdel mysqlrm -rf /var/spool/mail/mysqlrm -rf /etc/init.d/mysqlrm -rf /home/mysql %changelog执行打包命令rpmbuild -bb ./mysql.spec输出:?1234567891011Requires(pre): /bin/shRequires(post): /bin/shRequires(preun): /bin/shCheckingforunpackaged file(s):/usr/lib/rpm/check-files /var/tmp/mysql-rpm-5.6.21-renfengjun-rootwarning: Couldnotcanonicalize 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。这里写了一点测试数据:?1234567mysql>select*fromdexdb.t ;+------+------------+| id |name |+------+------------+| 1 |renfengjun |+------+------------+1 rowinset(0.00 sec)数据模板打包,记得ibdata1打包上cd /u01/mysql/datatar cf data.tar ibdata1 mysql/ dexdb/performance_schema/ test/修改my.cnfmy.cnf文件内容:?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128[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=1024serverid在自动化安装脚本中自动生成。将上面的data.tar 、my.cnf、生成的rpm包copy到ftp的pub目录下/var/ftp/pub/自动化安装脚本auto_install_mysql.sh:?1234567891011121314151617181920#!/bin/shyum install -y cmake gcc g++ bisonncurses-devel zlib ftp -n<> my.cnf cp my.cnf /u01/mysql/执行远程自动安装命令执行远程拷贝(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输出:?12345678910111213141516171819202122232425[[root@centos511 ~]# ./dcli -l root -c192.168.0.36 /root/get_rpm.shroot@192.168.0.36'spassword:192.168.0.36: Address 192.168.0.36 maps tolocalhost, but this doesnotmap backtothe address - POSSIBLE BREAK-INATTEMPT!192.168.0.36: Loaded plugins: fastestmirror,security192.168.0.36: Loading mirror speedsfromcachedhostfile192.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 installedandlatest version192.168.0.36: Package gcc-4.1.2-55.el5.x86_64already installedandlatest version192.168.0.36:Nopackage g++ available.192.168.0.36: Package bison-2.3-2.1.x86_64already installedandlatest version192.168.0.36: Packagencurses-devel-5.5-24.20060715.x86_64 already installedandlatest version192.168.0.36: Packagencurses-devel-5.5-24.20060715.i386 already installedandlatest version192.168.0.36: Package zlib-1.2.3-7.el5.x86_64already installedandlatest version192.168.0.36: Package zlib-1.2.3-7.el5.i386already installedandlatest version192.168.0.36: Nothingtodo192.168.0.36: Please loginwithUSERandPASS.192.168.0.36: Please loginwithUSERandPASS.192.168.0.36: KERBEROS_V4 rejectedasanauthentication type192.168.0.36: Interactive modeoff.192.168.0.36: Preparing... ##################################################192.168.0.36: mysql-rpm ##################################################.......结束。验证一下?123456789101112131415161718192021222324252627282930313233343536373839404142434445[root@study2 ~]# service mysql startStarting MySQL.......................[ OK ] [root@study2 ~]# su - mysqlmys[mysql@study2 ~]$ mysqlWelcometothe MySQL monitor. Commandsendwith;or\g.Your MySQLconnectionidis1Server version: 5.6.21-r5436-log Sourcedistribution Copyright (c) 2000, 2014, Oracleand/oritsaffiliates.Allrights reserved. Oracleisa registered trademarkofOracleCorporationand/oritsaffiliates. Other names may be trademarks oftheir respectiveowners. Type'help;'or'\h'forhelp. Type'\c'toclear thecurrentinput statement. root@(none) 12:29:11>show databases ;+--------------------+|Database |+--------------------+| information_schema || dexdb || mysql || performance_schema || test |+--------------------+5rowsinset(0.37 sec) root@(none) 12:29:14>use dexdb ;Databasechangedroot@dexdb 12:29:17>select*fromt ;+------+------------+| id |name |+------+------------+| 1 |renfengjun |+------+------------+1 rowinset(0.19 sec) root@dexdb 12:29:19>quitBye [root@study2 ~]# service mysql stopShutting down MySQL.[ OK ]比较粗糙,还有需要改进的地方。慢慢完善吧。文章来源:http://www.2cto.com/database/201412/356939.html