[转]自动化部署MySQL5.6步骤


准备工作

首先需要搭建ftpserver

?
1
2
3
yum install vsftpd
  
service vsftpd start

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

安装rpm-build

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

?
1
yum install rpm-build

下面开始rpm打包

?
1
2
3
4
cd /u01/mysql-5.6.21
mkdir rpm
cd rpm

修改mysql.spec

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Name : mysql-rpm
Version:5.6.21
Release: renfengjun
License: GPL
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

输出:

?
1
2
3
4
5
6
7
8
9
10
11
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。这里写了一点测试数据:

?
1
2
3
4
5
6
7
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文件内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
[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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/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

输出:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[[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                  ##################################################
.......

结束。

验证一下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[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  ]

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


文章来源:http://www.2cto.com/database/201412/356939.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值