自动化部署MySQL 5.6 步骤 制作到ftp共享,永远使用
首先需要搭建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.gz
- cd /u01/mysql-5.6.21
- mkdir rpm
- cd rpm
修改mysql.spec
- Name: mysql-rpm
- Version:5.6.21
- Release: renfengjun
- License: GPL
- URL: http://dev.mysql.com/
- Group: applications/database
- BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
- BuildRequires: cmake
- Packager: dexter.ren.jl@gmail.com
- Autoreq: no
- prefix: /u01/mysql
- Summary: mysql-5.6.21.tar.gz
- %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-loadproduction 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
- mkdir -p /u01/mysql/data
- mkdir -p /u01/mysql/run
- mkdir -p /u01/mysql/log
- groupadd mysql
- useradd -g mysql mysql
- chown -R mysql:mysql /u01/mysql/data
- chown -R mysql:mysql /u01/mysql/log
- chown -R mysql:mysql /u01/mysql/run
- echo "exportPATH=$PATH:/u01/mysql/bin" >> /home/mysql/.bash_profile
- %post
- ln -s %{prefix}/lib %{prefix}/lib64
- cp /u01/mysql/support-files/mysql.server/etc/init.d/mysql
- chkconfig mysql on
- %preun
- chkconfig --del mysql
- rm -rf /u01
- userdel mysql
- rm -rf /var/spool/mail/mysql
- rm -rf /etc/init.d/mysql
- rm -rf /home/mysql
- %changelog
执行打包命令
rpmbuild -bb ./mysql.spec
输出:
- Requires(pre): /bin/sh
- Requires(post): /bin/sh
- Requires(preun): /bin/sh
- Checking for unpackaged file(s):/usr/lib/rpm/check-files /var/tmp/mysql-rpm-5.6.21-renfengjun-root
- warning: Could not canonicalize hostname:centos511
- Wrote:/usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpm
- Executing(%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=3306
- prompt=\\u@\\d \\r:\\m:\\s>
- default-character-set=gbk
- no-auto-rehash
- [client]
- port=3306
- socket=/u01/mysql/run/mysql.sock
- [mysqld]
- #dir
- basedir=/u01/mysql
- datadir=/u01/mysql/data
- tmpdir=/tmp
- lc_messages_dir=/u01/mysql/share
- log-error=/u01/mysql/log/alert.log
- slow_query_log_file=/u01/mysql/log/slow.log
- general_log_file=/u01/mysql/log/general.log
- socket=/u01/mysql/run/mysql.sock
- #innodb
- innodb_data_home_dir=/u01/mysql/data
- innodb_log_group_home_dir=/u01/mysql/data
- innodb_data_file_path=ibdata1:12M
- innodb_buffer_pool_size=10G
- innodb_buffer_pool_instances=4
- innodb_log_files_in_group=2
- 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=1000
- innodb_thread_concurrency=16
- 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=inserts
- 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=5
- innodb_rollback_on_timeout=0
- innodb_purge_threads=1
- innodb_strict_mode=1
- transaction-isolation=READ-COMMITTED
- #myisam
- key_buffer=64M
- myisam_sort_buffer_size=64M
- concurrent_insert=2
- delayed_insert_timeout=300
- #replication
- master-info-file=/u01/mysql/log/master.info
- relay-log=/u01/mysql/log/relaylog
- relay_log_info_file=/u01/mysql/log/relay-log.info
- relay-log-index=/u01/mysql/log/mysqld-relay-bin.index
- slave_load_tmpdir=/u01/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=/u01/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
- #sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE"
- 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
- #table_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
serverid在自动化安装脚本中自动生成。
将上面的data.tar 、my.cnf、生成的rpm包copy到ftp的pub目录下
/var/ftp/pub/
自动化安装脚本
auto_install_mysql.sh:
- #!/bin/sh
- yum install -y cmake gcc g++ bisonncurses-devel zlib
- ftp -n<<EOF
- open 192.168.0.33
- user anonymous dexter
- binary
- cd pub
- prompt
- mget *
- EOF
- rpm -ivh mysql-rpm-5.6.21-renfengjun.x86_64.rpm
- tar -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/
执行远程自动安装命令
执行远程拷贝(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.sh
- root@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,security
- 192.168.0.36: Loading mirror speeds from cachedhostfile
- 192.168.0.36: * base: mirrors.btte.net
- 192.168.0.36: * extras: mirrors.btte.net
- 192.168.0.36: * updates: mirrors.yun-idc.com
- 192.168.0.36: Setting up Install Process
- 192.168.0.36: Packagecmake-2.6.4-5.el5.4.x86_64 already installed and latest version
- 192.168.0.36: Package gcc-4.1.2-55.el5.x86_64already installed and latest version
- 192.168.0.36: No package g++ available.
- 192.168.0.36: Package bison-2.3-2.1.x86_64already installed and latest version
- 192.168.0.36: Packagencurses-devel-5.5-24.20060715.x86_64 already installed and latest version
- 192.168.0.36: Packagencurses-devel-5.5-24.20060715.i386 already installed and latest version
- 192.168.0.36: Package zlib-1.2.3-7.el5.x86_64already installed and latest version
- 192.168.0.36: Package zlib-1.2.3-7.el5.i386already installed and latest version
- 192.168.0.36: Nothing to do
- 192.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 type
- 192.168.0.36: Interactive mode off.
- 192.168.0.36: Preparing... ##################################################
- 192.168.0.36: mysql-rpm ##################################################
- .......
结束。
验证一下
- [root@study2 ~]# service mysql start
- Starting MySQL.......................[ OK ]
- [root@study2 ~]# su - mysql
- mys[mysql@study2 ~]$ mysql
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 1
- Server 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 its
- affiliates. Other names may be trademarks oftheir respective
- owners.
- 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 changed
- root@dexdb 12:29:17>select * from t ;
- +------+------------+
- | id |name |
- +------+------------+
- | 1 |renfengjun |
- +------+------------+
- 1 row in set (0.19 sec)
- root@dexdb 12:29:19>quit
- Bye
- [root@study2 ~]# service mysql stop
- Shutting down MySQL.[ OK ]
比较粗糙,还有需要改进的地方。慢慢完善吧。
自动化部署MySQL 5.6 步骤 制作到ftp共享,永远使用的更多相关文章
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解
centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...
- 细说Mysql四种安装方法及自动化部署
一.简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件中,但是 ...
- 部署MySQL自动化运维工具inception+archer
***************************************************************************部署MySQL自动化运维工具inception+a ...
- Mysql安装及自动化部署脚本方案
一.简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件中,但是 ...
- TFS Server 2017 自动化部署步骤
1 第一步,在服务器上安装TFS 2 第二步,安装完TFS后需要配置你的项目,选择管理代码的方式,这里我们可以选择传统的TFS 也可以选择GIT 方式,此处我选择的GIT 方式 3 第三步,设置代理. ...
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...
- 转 Apache Ant 实现自动化部署
Apache Ant 实现自动化部署 Apache Ant 实现自动化部署 http://www.netkiller.cn/journal/java.ant.html Mr. Neo Chen (陈景 ...
- MySQL5.6.12 rpm制作及及自动化部署安装
转自:http://blog.itpub.net/29254281/viewspace-1268918/ 首先,下载rpmbuildyum install rpm-build -y它是Red Hat用 ...
随机推荐
- RabbitMQ 消息队列 DEMO
1. 引用 RabbitMQ.Client.5.1.0 2. http://localhost:15672/ public class TestController : ApiController { ...
- .NET Core 玩一玩 Ocelot API网关
.net 这几年国内确实不好过. 很多都选择转行.不过.net Core跨平台 开源之后 .社区的生态在慢慢建立.往好的趋势发展. 对于坚守在.NET战线的开发者来说 是个挺不错的消息. 特别是微软 ...
- C - 前m大的数 (结构体)
点击打开链接 还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的 ...
- OCP 12c 062题库大更新,出现大量新题-5
5.One of your databases supports an OLTP workload. The default undo tablespace is fixed size with: 1 ...
- Math-645. Set Mismatch
The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of ...
- Git进行fork后如何与原仓库同步
在进行Git协同开发的时候,往往会去fork一个仓库到自己的Git中,过一段时间以后,原仓库可能会有各种提交以及修改,很可惜,Git本身并没有自动进行同步的机制,这个需要手动去执行.name如何进行自 ...
- webpack初学者(1)
最近在学习webpack的总结,不完善的希望各位提出宝贵的建议.本篇是以webpack3.0版本为基础的学习总结. 一.webpack的概念及作用 wepack是一个模块打包兼优化工具.往往一个项目中 ...
- 54.Storm环境搭建
集群环境搭建 关闭防火墙,修改/etc/hosts配置(3台机器的ip可以相互通信) 下载安装jdk7(1.6以上),配置JAVA_HOME, CLASSPATH 搭建Zookeeper集群(保证3台 ...
- CSS3 :nth-child(n)使用注意
:nth-child(n) ---->选中某个元素,该元素必须是某个父元素下的第n个子元素: p:nth-child(n) ---->选中p元素,且该p元素必须是某个父元素下的第 ...
- EF基础知识小记三(设计器=>数据库)
本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1.通过EF设计器创建一个简单模型 (1).右键目标项目添加新建项 (2).选择ADO.Net ...