首先需要搭建ftpserver

  1. yum install vsftpd
  2.  
  3. service vsftpd start

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

安装rpm-build

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

  1. yum install rpm-build

下面开始rpm打包

  1. mget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.21.tar.gz
  2. cd /u01/mysql-5.6.21
  3. mkdir rpm
  4. cd rpm

修改mysql.spec

  1. Name: mysql-rpm
  2. Version:5.6.21
  3. Release: renfengjun
  4. License: GPL
  5. URL: http://dev.mysql.com/
  6. Group: applications/database
  7. BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
  8. BuildRequires: cmake
  9. Packager: dexter.ren.jl@gmail.com
  10. Autoreq: no
  11. prefix: /u01/mysql
  12. Summary: mysql-5.6.21.tar.gz
  13.  
  14. %description
  15. The MySQL(TM) software delivers a very fast,multi-threaded, multi-user,
  16. and robust SQL (Structured Query Language)database server. MySQL Server
  17. is intended for mission-critical, heavy-loadproduction systems as well
  18. as for embedding into mass-deployed software.
  19.  
  20. %define MYSQL_USER mysql
  21. %define MYSQL_GROUP mysql
  22. %define __os_install_post %{nil}
  23.  
  24. %build
  25. cd $OLDPWD/../
  26. CFLAGS="-O3 -g -fno-exceptions-static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
  27. CXX=g++
  28. CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti-static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
  29. export CFLAGS CXX CXXFLAGS
  30.  
  31. cmake . \
  32. -DSYSCONFDIR:PATH=%{prefix} \
  33. -DCMAKE_INSTALL_PREFIX:PATH=%{prefix} \
  34. -DCMAKE_BUILD_TYPE:STRING=Release \
  35. -DENABLE_PROFILING:BOOL=ON \
  36. -DWITH_DEBUG:BOOL=OFF \
  37. -DWITH_VALGRIND:BOOL=OFF \
  38. -DENABLE_DEBUG_SYNC:BOOL=OFF \
  39. -DWITH_EXTRA_CHARSETS:STRING=all \
  40. -DWITH_SSL:STRING=bundled \
  41. -DWITH_UNIT_TESTS:BOOL=OFF \
  42. -DWITH_ZLIB:STRING=bundled \
  43. -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \
  44. -DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \
  45. -DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON \
  46. -DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON \
  47. -DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON \
  48. -DDEFAULT_CHARSET=utf8 \
  49. -DDEFAULT_COLLATION=utf8_general_ci \
  50. -DWITH_EXTRA_CHARSETS=all \
  51. -DENABLED_LOCAL_INFILE:BOOL=ON \
  52. -DWITH_EMBEDDED_SERVER=0 \
  53. -DINSTALL_LAYOUT:STRING=STANDALONE \
  54. -DCOMMUNITY_BUILD:BOOL=ON \
  55. -DMYSQL_SERVER_SUFFIX='-r5436';
  56.  
  57. make -j `cat /proc/cpuinfo | grep processor| wc-l`
  58.  
  59. %install
  60. cd $OLDPWD/../
  61. make DESTDIR=$RPM_BUILD_ROOT install
  62.  
  63. %clean
  64. rm -rf $RPM_BUILD_ROOT
  65.  
  66. %files
  67. %defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
  68. %attr(755, %{MYSQL_USER}, %{MYSQL_GROUP})%{prefix}/*
  69.  
  70. %pre
  71. mkdir -p /u01/mysql/data
  72. mkdir -p /u01/mysql/run
  73. mkdir -p /u01/mysql/log
  74. groupadd mysql
  75. useradd -g mysql mysql
  76. chown -R mysql:mysql /u01/mysql/data
  77. chown -R mysql:mysql /u01/mysql/log
  78. chown -R mysql:mysql /u01/mysql/run
  79. echo "exportPATH=$PATH:/u01/mysql/bin" >> /home/mysql/.bash_profile
  80.  
  81. %post
  82. ln -s %{prefix}/lib %{prefix}/lib64
  83. cp /u01/mysql/support-files/mysql.server/etc/init.d/mysql
  84. chkconfig mysql on
  85.  
  86. %preun
  87. chkconfig --del mysql
  88. rm -rf /u01
  89. userdel mysql
  90. rm -rf /var/spool/mail/mysql
  91. rm -rf /etc/init.d/mysql
  92. rm -rf /home/mysql
  93.  
  94. %changelog

执行打包命令

rpmbuild -bb ./mysql.spec

输出:

  1. Requires(pre): /bin/sh
  2. Requires(post): /bin/sh
  3. Requires(preun): /bin/sh
  4. Checking for unpackaged file(s):/usr/lib/rpm/check-files /var/tmp/mysql-rpm-5.6.21-renfengjun-root
  5. warning: Could not canonicalize hostname:centos511
  6. Wrote:/usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpm
  7. Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.62530
  8. + umask 022
  9. + cd /usr/src/redhat/BUILD
  10. + rm -rf/var/tmp/mysql-rpm-5.6.21-renfengjun-root
  11. + exit 0

生成的rpm包在这里:

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

打包数据模板

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

  1. mysql> select * from dexdb.t ;
  2. +------+------------+
  3. | id |name |
  4. +------+------------+
  5. | 1 |renfengjun |
  6. +------+------------+
  7. 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文件内容:

  1. [mysqld_safe]
  2. pid-file=/u01/mysql/run/mysqld.pid
  3. #malloc-lib=/u01/mysql/lib/libjemalloc.so
  4.  
  5. [mysql]
  6. port=3306
  7. prompt=\\u@\\d \\r:\\m:\\s>
  8. default-character-set=gbk
  9. no-auto-rehash
  10.  
  11. [client]
  12. port=3306
  13. socket=/u01/mysql/run/mysql.sock
  14.  
  15. [mysqld]
  16. #dir
  17. basedir=/u01/mysql
  18. datadir=/u01/mysql/data
  19. tmpdir=/tmp
  20. lc_messages_dir=/u01/mysql/share
  21. log-error=/u01/mysql/log/alert.log
  22. slow_query_log_file=/u01/mysql/log/slow.log
  23. general_log_file=/u01/mysql/log/general.log
  24. socket=/u01/mysql/run/mysql.sock
  25.  
  26. #innodb
  27. innodb_data_home_dir=/u01/mysql/data
  28. innodb_log_group_home_dir=/u01/mysql/data
  29. innodb_data_file_path=ibdata1:12M
  30. innodb_buffer_pool_size=10G
  31. innodb_buffer_pool_instances=4
  32. innodb_log_files_in_group=2
  33. innodb_log_file_size=1G
  34. innodb_log_buffer_size=200M
  35. innodb_flush_log_at_trx_commit=1
  36. innodb_additional_mem_pool_size=20M
  37. innodb_max_dirty_pages_pct=60
  38. innodb_io_capacity=1000
  39. innodb_thread_concurrency=16
  40. innodb_read_io_threads=8
  41. innodb_write_io_threads=8
  42. innodb_open_files=60000
  43. innodb_file_format=Barracuda
  44. innodb_file_per_table=1
  45. innodb_flush_method=O_DIRECT
  46. innodb_change_buffering=inserts
  47. innodb_adaptive_flushing=1
  48. innodb_old_blocks_time=1000
  49. innodb_stats_on_metadata=0
  50. innodb_read_ahead=0
  51. innodb_use_native_aio=0
  52. innodb_lock_wait_timeout=5
  53. innodb_rollback_on_timeout=0
  54. innodb_purge_threads=1
  55. innodb_strict_mode=1
  56. transaction-isolation=READ-COMMITTED
  57.  
  58. #myisam
  59. key_buffer=64M
  60. myisam_sort_buffer_size=64M
  61. concurrent_insert=2
  62. delayed_insert_timeout=300
  63.  
  64. #replication
  65. master-info-file=/u01/mysql/log/master.info
  66. relay-log=/u01/mysql/log/relaylog
  67. relay_log_info_file=/u01/mysql/log/relay-log.info
  68. relay-log-index=/u01/mysql/log/mysqld-relay-bin.index
  69. slave_load_tmpdir=/u01/mysql/tmp
  70. slave_type_conversions="ALL_NON_LOSSY"
  71. slave_net_timeout=4
  72. skip-slave-start
  73. sync_master_info=1000
  74. sync_relay_log_info=1000
  75.  
  76. #binlog
  77. log-bin=/u01/mysql/log/mysql-bin
  78. #server_id=2552763370
  79. binlog_cache_size=32K
  80. max_binlog_cache_size=2G
  81. max_binlog_size=500M
  82. binlog-format=ROW
  83. sync_binlog=1000
  84. log-slave-updates=1
  85. expire_logs_days=0
  86.  
  87. #server
  88. default-storage-engine=INNODB
  89. character-set-server=gbk
  90. lower_case_table_names=1
  91. skip-external-locking
  92. open_files_limit=65536
  93. safe-user-create
  94. local-infile=1
  95. #sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE"
  96. performance_schema=0
  97.  
  98. log_slow_admin_statements=1
  99. log_warnings=1
  100. long_query_time=1
  101. slow_query_log=1
  102. general_log=0
  103.  
  104. query_cache_type=0
  105. query_cache_limit=1M
  106. query_cache_min_res_unit=1K
  107.  
  108. table_definition_cache=65536
  109. #table_cache=65536
  110.  
  111. thread_stack=512K
  112. thread_cache_size=256
  113. read_rnd_buffer_size=128K
  114. sort_buffer_size=256K
  115. join_buffer_size=128K
  116. read_buffer_size=128K
  117.  
  118. port=3306
  119. skip-name-resolve
  120. skip-ssl
  121. max_connections=4500
  122. max_user_connections=4000
  123. max_connect_errors=65536
  124. max_allowed_packet=128M
  125. connect_timeout=8
  126. net_read_timeout=30
  127. net_write_timeout=60
  128. back_log=1024

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

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

/var/ftp/pub/

自动化安装脚本

auto_install_mysql.sh:

  1. #!/bin/sh
  2. yum install -y cmake gcc g++ bisonncurses-devel zlib
  3.  
  4. ftp -n<<EOF
  5. open 192.168.0.33
  6. user anonymous dexter
  7. binary
  8. cd pub
  9. prompt
  10. mget *
  11. EOF
  12.  
  13. rpm -ivh mysql-rpm-5.6.21-renfengjun.x86_64.rpm
  14. tar -xvf data.tar -C /u01/mysql/data/
  15. chown -R mysql:mysql /u01/mysql/
  16.  
  17. unique_id=`date "+%Y%m%d%M%S"`
  18. echo 'server_id='$unique_id >> my.cnf
  19.  
  20. 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

输出:

  1. [[root@centos511 ~]# ./dcli -l root -c192.168.0.36 /root/get_rpm.sh
  2. root@192.168.0.36's password:
  3. 192.168.0.36: Address 192.168.0.36 maps tolocalhost, but this does not map back to the address - POSSIBLE BREAK-INATTEMPT!
  4. 192.168.0.36: Loaded plugins: fastestmirror,security
  5. 192.168.0.36: Loading mirror speeds from cachedhostfile
  6. 192.168.0.36: * base: mirrors.btte.net
  7. 192.168.0.36: * extras: mirrors.btte.net
  8. 192.168.0.36: * updates: mirrors.yun-idc.com
  9. 192.168.0.36: Setting up Install Process
  10. 192.168.0.36: Packagecmake-2.6.4-5.el5.4.x86_64 already installed and latest version
  11. 192.168.0.36: Package gcc-4.1.2-55.el5.x86_64already installed and latest version
  12. 192.168.0.36: No package g++ available.
  13. 192.168.0.36: Package bison-2.3-2.1.x86_64already installed and latest version
  14. 192.168.0.36: Packagencurses-devel-5.5-24.20060715.x86_64 already installed and latest version
  15. 192.168.0.36: Packagencurses-devel-5.5-24.20060715.i386 already installed and latest version
  16. 192.168.0.36: Package zlib-1.2.3-7.el5.x86_64already installed and latest version
  17. 192.168.0.36: Package zlib-1.2.3-7.el5.i386already installed and latest version
  18. 192.168.0.36: Nothing to do
  19. 192.168.0.36: Please login with USER and PASS.
  20. 192.168.0.36: Please login with USER and PASS.
  21. 192.168.0.36: KERBEROS_V4 rejected as anauthentication type
  22. 192.168.0.36: Interactive mode off.
  23. 192.168.0.36: Preparing... ##################################################
  24. 192.168.0.36: mysql-rpm ##################################################
  25. .......

结束。

验证一下

  1. [root@study2 ~]# service mysql start
  2. Starting MySQL.......................[ OK ]
  3.  
  4. [root@study2 ~]# su - mysql
  5. mys[mysql@study2 ~]$ mysql
  6. Welcome to the MySQL monitor. Commands end with ; or \g.
  7. Your MySQL connection id is 1
  8. Server version: 5.6.21-r5436-log Sourcedistribution
  9.  
  10. Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.
  11.  
  12. Oracle is a registered trademark of OracleCorporation and/or its
  13. affiliates. Other names may be trademarks oftheir respective
  14. owners.
  15.  
  16. Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.
  17.  
  18. root@(none) 12:29:11>show databases ;
  19. +--------------------+
  20. | Database |
  21. +--------------------+
  22. | information_schema |
  23. | dexdb |
  24. | mysql |
  25. | performance_schema |
  26. | test |
  27. +--------------------+
  28. 5 rows in set (0.37 sec)
  29.  
  30. root@(none) 12:29:14>use dexdb ;
  31. Database changed
  32. root@dexdb 12:29:17>select * from t ;
  33. +------+------------+
  34. | id |name |
  35. +------+------------+
  36. | 1 |renfengjun |
  37. +------+------------+
  38. 1 row in set (0.19 sec)
  39.  
  40. root@dexdb 12:29:19>quit
  41. Bye
  42.  
  43. [root@study2 ~]# service mysql stop
  44. Shutting down MySQL.[ OK ]

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

自动化部署MySQL 5.6 步骤 制作到ftp共享,永远使用的更多相关文章

  1. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  2. centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解

    centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...

  3. 细说Mysql四种安装方法及自动化部署

    一.简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件中,但是 ...

  4. 部署MySQL自动化运维工具inception+archer

    ***************************************************************************部署MySQL自动化运维工具inception+a ...

  5. Mysql安装及自动化部署脚本方案

    一.简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件中,但是 ...

  6. TFS Server 2017 自动化部署步骤

    1 第一步,在服务器上安装TFS 2 第二步,安装完TFS后需要配置你的项目,选择管理代码的方式,这里我们可以选择传统的TFS 也可以选择GIT 方式,此处我选择的GIT 方式 3 第三步,设置代理. ...

  7. Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记

    前言    持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...

  8. 转 Apache Ant 实现自动化部署

    Apache Ant 实现自动化部署 Apache Ant 实现自动化部署 http://www.netkiller.cn/journal/java.ant.html Mr. Neo Chen (陈景 ...

  9. MySQL5.6.12 rpm制作及及自动化部署安装

    转自:http://blog.itpub.net/29254281/viewspace-1268918/ 首先,下载rpmbuildyum install rpm-build -y它是Red Hat用 ...

随机推荐

  1. RabbitMQ 消息队列 DEMO

    1. 引用 RabbitMQ.Client.5.1.0 2. http://localhost:15672/ public class TestController : ApiController { ...

  2. .NET Core 玩一玩 Ocelot API网关

    .net 这几年国内确实不好过. 很多都选择转行.不过.net Core跨平台 开源之后 .社区的生态在慢慢建立.往好的趋势发展. 对于坚守在.NET战线的开发者来说 是个挺不错的消息.  特别是微软 ...

  3. C - 前m大的数 (结构体)

    点击打开链接 还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的 ...

  4. OCP 12c 062题库大更新,出现大量新题-5

    5.One of your databases supports an OLTP workload. The default undo tablespace is fixed size with: 1 ...

  5. Math-645. Set Mismatch

    The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of ...

  6. Git进行fork后如何与原仓库同步

    在进行Git协同开发的时候,往往会去fork一个仓库到自己的Git中,过一段时间以后,原仓库可能会有各种提交以及修改,很可惜,Git本身并没有自动进行同步的机制,这个需要手动去执行.name如何进行自 ...

  7. webpack初学者(1)

    最近在学习webpack的总结,不完善的希望各位提出宝贵的建议.本篇是以webpack3.0版本为基础的学习总结. 一.webpack的概念及作用 wepack是一个模块打包兼优化工具.往往一个项目中 ...

  8. 54.Storm环境搭建

    集群环境搭建 关闭防火墙,修改/etc/hosts配置(3台机器的ip可以相互通信) 下载安装jdk7(1.6以上),配置JAVA_HOME, CLASSPATH 搭建Zookeeper集群(保证3台 ...

  9. CSS3 :nth-child(n)使用注意

    :nth-child(n)    ---->选中某个元素,该元素必须是某个父元素下的第n个子元素: p:nth-child(n)   ---->选中p元素,且该p元素必须是某个父元素下的第 ...

  10. EF基础知识小记三(设计器=>数据库)

    本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1.通过EF设计器创建一个简单模型 (1).右键目标项目添加新建项 (2).选择ADO.Net ...