MySQL数据库
数据库管理系统的优点 :
相互关联的数据的集合
较少的数据冗余
程序与数据相互独立
保证数据的安全、可靠
最大限度地保证数据的正确性
数据可以并发使用并能同时保证一致性
数据库管理系统的基本功能 :
数据定义
数据处理
数据安全
数据备份
数据库系统的架构 ;
单机架构
大型主机/终端架构
主从式架构(C/S)
分布式架构
事务transaction:多个操作被当作一个整体对待
A: 原子性
C:一致性
I: 隔离性
D:持久性
MariaDB的特性;
插件式存储引擎
单进程,多线程
诸多扩展和新特性
提供了较多测试组件
开源
安装Mariadb :(端口系统默认为3306)
centos7系统上默认用的是mariadb,centos6系统上用的是mysql,他们之间本质上是没有区别的。
Mariadb安装方式:
检查环境
iptables
selinux
mariadb-server (查看系统上是否已经安装过mariadb包了)
1、源代码:编译安装
1 . 下载源码;上图的官网里下载:https://downloads.mariadb.org/mariadb/10.2.15/
2 . 安装编译所需要的的包:
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssldevel ncurses-devel libxml2-devel
3 . useradd -r -s /sbin/nologin mysql (创建用户)
4 . 将源码解压缩:tar xvf mariadb-10.2.15.tar.gz
5 . mkdir -pv /data/mysqldb chown mysql.mysql /data/mysqldb (创建数据库的目录,并指定其所有者和所有组)
6 . 将解压缩的源码进行编译:
cd mariadb-10.2.15/(要先进入到源码解压缩后的文件夹下)
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \ (程序安装路径)
-DMYSQL_DATADIR=/data/mysqldb/ \ (库文件存放路径)
-DSYSCONFDIR=/etc \
-DMYSQL_USER=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=/app/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
(执行此命令一定要按照上述格式来执行)
7 . make – j 4 && make install (开始编译安装)
8 .准备环境变量
echo ‘PATH=/app/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh (将编译的二进制程序目录添加到PATH变量里去)
. /etc/profile.d/mysql.sh (让PATH变量生效)
9 . 生成数据库文件
cd /app/mysql/ (进到此目录下)
scripts/mysql_install_db –datadir=/data/mysqldb/ –user=mysql
(执行此脚本,此脚本为生成数据库的配置文件)
10 . 准备配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
修改/etc/my.cnf的配置文件:
datadir = /data/mysqldb (添加此行指定其数据库目录的路径)
11 . 准备启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
(将编译好的二进制启动脚本复制到init.d的启动管理去。)
setfacl -R -m u:mysql:rwx /app/mysql/ (对mysql用户增加对/app/mysql/目录的读写执行的权限)
12 . 启动服务
chkconfig –add mysqld (将mysqld加入到开机启动项里)
chkconfig –list (查看启动列表项)
service mysqld start
2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
1. 下载二进制包:
https://downloads.mariadb.org/mariadb/10.2.15/ (在此官网就可以下载)
二进制包:mariadb-10.2.15-linux-x86_64.tar (带有linux而且在400M以上)
2 . 新建用户
创建数据库的用户账号:useradd -r -d /app/mysql -s /sbin/nologin mysql
3 . 解压缩:
tar -xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local(此解压路径是根据它源码编译时指定的路径,可以到官网上查到)
4 . 进入到cd /usr/local目录下指定软连接:ln -s mariadb-10.2.15-linux-x86_64/ mysql 指定好了之后。后面的操作就可以使用mysql,而不是要写mariadb-10.2.15-linux-x86_64/一长串了。
5 . 进入到mysql目录下发现所有文件的账号都是500,所以要将其用户账号更改为root所有
回到 /usr/local目录下更改mysql目录及目录下的文件的所有者所属组:chown -R root: mysql/
在此文件夹下/usr/local/mysql/bin/有许多要执行的文件,需要将其加入到$PATH变量里 ,以后执行不必在写绝对路径了。
echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh (加入$PATH变量里)
. /etc/profile.d/mysql.sh (让文件生效)
6. 指定以后数据库存放的路径:
因为数据库需要大的存储空间,可以考虑使用逻辑卷来管理,如果存储空间不够的话还可以重新在扩容。
新加一块虚拟硬盘:同步硬盘:echo ‘- – -‘ > /sys/class/scsi_host/host2/scan
新加的硬盘不用分区,直接创建逻辑卷就可以了。
pvcreate /dev/sdb (变成物理卷)
vgcreate vg0 /dev/sdb (创建卷组vg0)
lvcreate -n lv_mysql -l 100%FREE vg0(创建逻辑卷lv_mysql,并将卷组的空间全部用完)
mkfs.xfs /dev/vg0/lv_mysql (创建文件系统)
创建文件夹(此文件夹为,刚才创建用户时指定的家目录)mkdir /app/
并挂载到刚刚创建的逻辑卷里:(写到磁盘里面)
vim /etc/fstab
UUID=2e6b78f8-fefa-451b-aa5f-aa4199367f08 /app/ xfs defaults 0 0
mount -a (让挂载生效)
mkdir /app/mysqldb (将文件夹建立起来)
chown mysql.mysql /app/mysqldb (将文件夹的所有者和所属组都改为mysql)
7 . 生成数据库的必要配置文件
执行一个脚本就可以了,此脚本在mysql的程序文件夹下/usr/local/mysql/scripts
scripts/mysql_install_db –datadir=/app/mysqldb –user=mysql(执行此脚本。并指定生成的配置文件存放的路径为刚刚创建的数据库的路径) 有0k代表执行成功了。
执行此脚本必须要在/usr/local/mysql 此目录下因为此脚本有依赖。
8 . 修改配置文件,告诉数据库存放的路径:
/usr/local/mysql/support-files/my-huge.cnf (大环境下使用,但只有2G)
cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf (将二进制程序里的模板文件复制到mysql的配置文件下修改)
vim /etc/my.cnf
9 . 启动服务:(将二进制程序里的启动脚本复制出来,到init.d里使其变成服务脚本)
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig –add mysqld(将服务脚本加到启动程序里)
可以通过chkconfig –list 来查看是否添加到启动程序里了。
手动开启服务即可:service mysqld start (如果起不来直接启程序;./mysqld start )
3、程序包管理器管理的程序包安装。
1 . 本身光盘里有mariadb的rpm包,只需用yum 安装一下就可以了:
此包为系统自带的版本,版本较低
yum install mariadb-server (服务端)装好后连客户端一起安装了(yum install mariadb)
systemctl start mariadb (启动服务)
systemctl stop mariadb (暂停服务)
mysql (进入数据库) quit/exit (退出数据库)
2. 到官网安装:(已配好了的yum源复制过来建个仓库就可以了)
可以安装最新的版本。
https://downloads.mariadb.org/mariadb/repositories/ (官网地址)
将yum源复制到自己所配的仓库里,然后安装就可以了.
yum install MariaDB (注意大小写就可以了,查看外网是否通)
安装完启动服务就可以了:systemctl start mariadb
在系统里如果光盘里有mariadb的老版本和新的yum版本,会默认安装最新的版本。
实验:mysql(mariadb)多实例安装: (既在一台主机上安装多个数据库)
由于mysql使用的都是默认的3306端口,所以在安装多个数据库时要将其端口修改一下。
1 . 首先yum 安装一个mariadb ;yum install mariadb
2 . 创建目录来存放三个实例:
mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv (创建每个实例所需的文件夹)
目录结构:
/mysql/
├── 3306
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
├── 3307
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
└── 3308
├── data (此目录是存放数据库文件)
├── etc (存放配置文件的)
├── log (存放日志文件的)
├── pid
└── socket (存放socket文件的)
3 . 由于yum已经安装了mariadb ,所以mysql用户已经建立了。
chown -R mysql.mysql /mysqldb/ (将刚才创建的文件夹的所有者和所属组都设为mysql)
4 .创建数据库的配置文件:
mysql_install_db –datadir=/mysqldb/3306/data –user=mysql (创建3306的)
mysql_install_db –datadir=/mysqldb/3307/data –user=mysql (创建3307的)
mysql_install_db –datadir=/mysqldb/3308/data –user=mysql (创建3308的)
如果是二进制安装或编译安装: 需要在后面添加 –basedir= xxxx
xxx需要在连接mysql 后输入show variables like ‘%basedir%’; 来查看路径。
如果是二进制安装或者编译安装,执行此条命令要进入到mysql_install_db此脚本的上级目录,如何查找他的路径请看上面两种安装时此脚本呢的具体路径。
5 . 创建/etc /的配置文件;默认路径在/etc/my.cnf
cp /etc/my.cnf /mysqldb/3306/etc/
cp /etc/my.cnf /mysqldb/3307/etc/
cp /etc/my.cnf /mysqldb/3308/etc/
然后修改配置文件:
vim /mysqldb/3306/etc/my.cnf
vim /mysqldb/3307/etc/my.cnf
vim /mysqldb/3308/etc/my.cnf
然后将每个文件都 按下图来修改:
6 . cp mysqld /mysqldb/3306/(将事先准备好的脚本复制到各个目录下)
cp mysqld /mysqldb/3306/
cp mysqld /mysqldb/3307/
cp mysqld /mysqldb/3308/
然后将复制过去的脚本文件修改一下对应的端口号就可以了。(如果是编译安装或者是二进制安装,此脚本还要将目录更改一下cmd_path=”/app/mysql/bin” 此地址为自己编译安装时的bin的地址)
7 . 将系统已有的服务暂停;
systemctl stop mariadb
给各个脚本添加执行权限:
chmod 700 /mysqldb/3306/mysqld
chmod 700 /mysqldb/3307/mysqld
chmod 700 /mysqldb/3308/mysqld
最后走一遍启动脚本:
/mysqldb/3306/mysqld start (stop 为停止)
/mysqldb/3307/mysqld start
/mysqldb/3308/mysqld start
服务启动之后;连接实例;由于实例的socket文件不在默认的路径,所以直接mysql无法连接实例
只有这样:mysql -S /mysqldb/3308/socket/mysql.sock (连接)
(多实例中的两个重要的配置文件要改对:/mysqldb/3306/mysqld此脚本文件和/mysqldb/3306/etc/my.cnf)
安全加固脚本:
mysiql服务安装好后,由于没有设置密码,需要跑一个脚本来设定密码。
nmysql_secure_installation (开启服务之后运行此脚本)
是否设置root口令 y
是否删除匿名用户 y
是否允许root远程登录 运行此脚本,交互式
是否删除test数据库 y
privilege tables y
以下为mysqld的脚本详细。
#!/bin/bash
port=3307
mysql_user=”root”
mysql_pwd=””
cmd_path=”/usr/bin”
mysql_basedir=”/mysqldb”
mysql_sock=”${mysql_basedir}/${port}/socket/mysql.sock”
function_start_mysql()
{
if [ ! -e “$mysql_sock” ];then
printf “Starting MySQL…\n”
else
printf “MySQL is running…\n”
exit
fi
}
function_stop_mysql()
{
if [ ! -e “$mysql_sock” ];then
if [ ! -e “$mysql_sock” ];then
printf “Starting MySQL…\n”
${cmd_path}/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”
${cmd_path}/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
二进制自动安装脚本:
此脚本里有让环境变量生效的. /etc/profile.d/mysql.sh 如果只是普通的执行脚本的话此环境变量只在脚本里生效,当脚本执行完了退出后之后此文件并不能生效。所以在执行脚本时用source mariadb.sh执行后就会在全局生效了。
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100334
评论列表(1条)
将事先准备好的脚本复制到各个目录下?请问是哪个脚本,没写明,