MysqL安装
MysqL有三种安装方式:yum安装、二进制安装、源码安装,多实例安装
二进制安装
实验环境:Centos7 192.168.37.10
MysqL版本:mariadb-10.2.25-linux-x86_64.tar
1、准备用户
# groupadd -r -g 306 MysqL
# useradd -r -g 306 -u 306 –d /data/MysqL MysqL
2、准备数据目录
# mkdir /data/MysqL
# chown MysqL:MysqL /data/MysqL
[root@test2 /data]#ll
total 4
drwxr-xr-x. 2 MysqL MysqL 6 Jul 4 11:04 MysqL
3、准备二进制文件
# tar xvf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local
# ln -sv mariadb-10.2.25-linux-x86_64/ MysqL
# chown -R root:MysqL /usr/local/MysqL/
[root@test2 /usr/local/MysqL]#ll
total 180
drwxr-xr-x. 2 root MysqL 4096 Mar 15 01:07 bin
-rw-r--r--. 1 root MysqL 17987 Jun 15 02:29 copYING
-rw-r--r--. 1 root MysqL 2354 Jun 15 02:29 CREDITS
drwxrwxr-x. 3 root MysqL 18 Jun 15 23:35 data
-rw-r--r--. 1 root MysqL 8245 Jun 15 02:29 EXCEPTIONS-CLIENT
drwxrwxr-x. 3 root MysqL 19 Jun 15 23:35 include
-rw-r--r--. 1 root MysqL 8694 Jun 15 02:29 INSTALL-BINARY
drwxr-xr-x. 5 root MysqL 4096 Mar 15 01:07 lib
drwxrwxr-x. 4 root MysqL 30 Jun 15 23:35 man
drwxrwxr-x. 11 root MysqL 4096 Jun 15 23:35 MysqL-test
-rw-r--r--. 1 root MysqL 2843 Jun 15 02:29 README.md
-rw-r--r--. 1 root MysqL 19477 Jun 15 02:29 README-wsrep
drwxrwxr-x. 2 root MysqL 30 Jun 15 23:35 scripts
drwxrwxr-x. 32 root MysqL 4096 Jun 15 23:35 share
drwxrwxr-x. 4 root MysqL 4096 Jun 15 23:35 sql-bench
drwxrwxr-x. 3 root MysqL 275 Jun 15 23:35 support-files
-rw-r--r--. 1 root MysqL 86263 Jun 15 02:29 THIRDPARTY
4、准备配置文件
# mkdir /etc/MysqL/
# cp support-files/my-large.cnf /etc/MysqL/my.cnf #support-files在MysqL目录下
# vim /etc/MysqL/my.cnf
[MysqLd]中添加三个选项:
28 datadir = /data/MysqL
29 innodb_file_per_table = on #默认存储引擎innodb
30 skip_name_resolve = on # 禁止主机名解析,建议使用
5、创建数据库文件
# cd /usr/local/MysqL/
# ./scripts/MysqL_install_db --datadir=/data/MysqL --user=MysqL
6、准备服务脚本,并启动服务
# cp ./support-files/MysqL.server /etc/rc.d/init.d/MysqLd
# chkconfig --add MysqLd
# service MysqLd start
7、PATH路径
# echo ‘PATH=/user/local/MysqL/bin:$PATH’ > /etc/profile.d/env.sh # 环境变量加入到启动脚本中
(8)安全初始化
/user/local/MysqL/bin/MysqL_secure_installation # MysqL安全加固 设置数据库管理员root口令
禁止root远程登录
删除anonymous用户帐号
删除test数据库
源码编译安装
实验环境:Centos7 192.168.37.7
MysqL版本:mariadb-10.2.25.tar
1、安装包解决依赖关系
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2、做准备用户和存储数据目录
useradd –r –s /sbin/nologin –d /data/MysqL/ MysqL
mkdir /data/MysqL
chown MysqL.MysqL /data/MysqL
3、解压并cmake 编译安装(过程较久需要耐心等待)
tar xvf mariadb-10.2.18.tar.gz
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译
编译选项:https://dev.MysqL.com/doc/refman/5.7/en/source-configuration-options.html
cd mariadb-10.2.25/
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/MysqL \ # 指定安装目录
-DMysqL_DATADIR=/data/MysqL/ \ # 数据库存放路径
-DSYSconfdIR=/etc/ \ # 选项文件目录
-DMysqL_USER=MysqL \ # 指定MysqL
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMysqL_UNIX_ADDR=/data/MysqL/MysqL.sock \
-DDEFAULT_CHARSET=utf8mb4 \ #指定字符集
-DDEFAULT_COLLATION=utf8_general_ci
make && make install
提示:如果出错,执行rm -f CMakeCache.txt
准备环境变量
echo 'PATH=/app/MysqL/bin:$PATH' > /etc/profile.d/MysqL.sh
. /etc/profile.d/MysqL.sh
生成数据库文件
cd /app/MysqL/
scripts/MysqL_install_db --datadir=/data/MysqL/ --user=MysqL
准备配置文件
cp /app/MysqL/support-files/my-huge.cnf /etc/my.cnf
准备启动脚本
cp /app/MysqL/support-files/MysqL.server /etc/init.d/MysqLd
启动服务
chkconfig --add MysqLd
service MysqLd start
MysqL多实例
MysqL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307),同时运行多个MysqL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。
这些MysqL多实例共用一套MysqL安装程序,使不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文件。在提供服务时,多实例MysqL在逻辑上看来是各自独立的,它们根据配置文件的对应设定值,获得服务器相应数量的硬件资源
实例 :
实验环境:centos7 192.168.37.30
yum源安装MariaDB多实例
1、安装MariaDB
# yum install MariaDB-server MariaDB -y
2、创建⽂件夹,将实例按端口号分开
# mkdir -pv /usr/local/MysqL/{3306,3307,3308}/{data,etc,socket,bin,log,pid}
[root@test2 ~]# tree /usr/local/MysqL
/usr/local/MysqL
├── 3306
│ ├── bin
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
├── 3307
│ ├── bin
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
└── 3308
├── bin
├── data
├── etc
├── log
├── pid
└── socket
21 directories, 0 files
3、查询用户,无用户则自行创建,具体步骤参考上一个案例
# id MysqL
# ll -d /usr/local/MysqL/
drwxr-xr-x 5 MysqL MysqL 42 May 22 17:18 /usr/local/MysqL/
4、为3个MariaDB实例创建初始化数据
# MysqL_install_db --user=MysqL --datadir=/usr/local/MysqL/3306/data
# MysqL_install_db --user=MysqL --datadir=/usr/local/MysqL/3307/data
# MysqL_install_db --user=MysqL --datadir=/usr/local/MysqL/3308/data
5、复制配置文件到多实例并配置
# cp /usr/share/MysqL/my-huge.cnf /usr/local/MysqL/3306/etc/my.cnf
19 [client]
20 #password = your_password
21 port = 3306
22 socket = /usr/local/MysqL/3306/socket/MysqL.sock
23
24 # Here follows entries for some specific programs
25
26 # The MysqL server
27 [MysqLd]
28 datadir = /usr/local/MysqL/3306/data/
29 port = 3306
30 socket = /usr/local/MysqL/3306/socket/MysqL.sock
31 log-error = /usr/local/MysqL/3306/log/mariadb.log
32 pid-file = /usr/local/MysqL/3306/pid/mariadb.pid
其他实例复制配置并修改端口号即可:
# cp /usr/local/MysqL/3306/etc/my.cnf /usr/local/MysqL/3307/etc/my.cnf
# sed -i 's/3306/3307/' /usr/local/MysqL/3307/etc/my.cnf
# cp /usr/local/MysqL/3306/etc/my.cnf /usr/local/MysqL/3308/etc/my.cnf
# sed -i 's/3306/3308/' /usr/local/MysqL/3308/etc/my.cnf
6、编写启动脚本
# vim /usr/local/MysqL/3306/bin/MysqLd
#!/bin/bash
#chkconfig: 345 80 2
port=3306
MysqL_user="root"
MysqL_basedir="/usr/local/MysqL"
MysqL_sock="${MysqL_basedir}/${port}/socket/MysqL.sock"
function_start_MysqL()
{
if [ ! -e "$MysqL_sock" ];then
printf "Starting MysqL...\n"
MysqLd_safe --defaults-file=${MysqL_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf "MysqL is running...\n"
exit
fi
}
function_stop_MysqL()
{
if [ ! -e "$MysqL_sock" ];then
printf "MysqL is stopped...\n"
exit
else
printf "Stoping MysqL...\n"
MysqLadmin -u ${MysqL_user} -p${MysqL_pwd} -S ${MysqL_sock} shutdown
fi
}
function_restart_MysqL()
{
printf "Restarting MysqL...\n"
function_stop_MysqL
sleep 2
function_start_MysqL
}
case $1 in
start)
function_start_MysqL
;;
stop)
function_stop_MysqL
;;
restart)
function_restart_MysqL
;;
*)
printf "Usage: ${MysqL_basedir}/${port}/bin/MysqLd {start|stop|restart}\n"
esac
其实实例复制并配置修改端口号即可
# chmod 755 /usr/local/MysqL/3306/bin/MysqLd
# cp /usr/local/MysqL/3306/bin/MysqLd /usr/local/MysqL/3307/bin/MysqLd
# sed -i 's/3306/3307/' /usr/local/MysqL/3307/bin/MysqLd
# cp /usr/local/MysqL/3306/bin/MysqLd /usr/local/MysqL/3308/bin/MysqLd
# sed -i 's/3306/3308/' /usr/local/MysqL/3308/bin/MysqLd
7、启动服务
[root@test2 ~]# /usr/local/MysqL/3306/bin/MysqLd start
Starting MysqL...
[root@test2 ~]# /usr/local/MysqL/3307/bin/MysqLd start
Starting MysqL...
[root@test2 ~]# /usr/local/MysqL/3308/bin/MysqLd start
Starting MysqL...
使用ss -ntl查看端口是否已经存在即可成功创建
8、关闭服务
# /usr/local/MysqL/3308/bin/MysqLd stop
9、 登录和修改密码
设置初始口令:(这是适合在脚本中免密时使用)
MysqLadmin -S /usr/lcoal/MysqL/3306/socket/MysqL.sock password 546803
MysqLadmin -S /usr/lcoal/MysqL/3307/socket/MysqL.sock password 546803
MysqLadmin -S /usr/lcoal/MysqL/3308/socket/MysqL.sock password 546803
登录:MysqL -uroot -S /usr/local/MysqL/3307/socket/MysqL.sock
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。