选择lvm逻辑卷存储数据库数据目录的2大理由
(1) 一般来说,我们会将数据库的数据目录放在lvm逻辑卷上,因为数据库的数据增长速度可能会超出我们的预期
,这样在将来即便是数据增长很快,我们也不必担心,因为lvm可以实现在线扩容
(2) 我们可以对数据目录做基于lvm快照的备份
1.创建用于存储数据目录lvm设备
1.1 创建一个新分区,并修改分区类型
# echo -e ‘n\np\n1\n\n+10G\nw\n‘|fdisk /dev/sdb
# echo -e ‘t\n8e\np\nw\n‘|fdisk /dev/sdb
显示和/dev/sdb相关的分区信息(磁盘分区,分区类型等)
# echo -e ‘p\nq\n‘|fdisk /dev/sdb
注:
磁盘分区仅有一个时,无需指定分区号
# echo -e ‘d\nw\n‘|fdisk /dev/sdb
磁盘分区多余一个时,需指定删除哪个分区
# echo -e ‘d\n2\nw\n‘|fdisk /dev/sdb
1.2 查看新增磁盘分区(/dev/sdb1)是否被内核识别
# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1
# cat /proc/partitions
major minor #blocks name
8 16 209715200 sdb
8 17 20980858 sdb1
8 0 209715200 sda
8 1 204800 sda1
8 2 62914560 sda2
8 3 5252256 sda3
253 0 20971520 dm-0
253 1 2097152 dm-1
253 2 10485760 dm-2
253 3 20971520 dm-3
很显然,/dev/sdb1已被内核识别。
注1:一般来说,我们需要查看2个位置,以确定新增分区的确已被内核识别:/dev/目录和/proc/partitions
注2:由于/dev/sdb是我新加的硬盘,所以很快就被内核识别了;若不是新硬盘,可能就需要执行如下操作,
才能使内核识别我们新增的硬盘:
不能识别时执行的操作:
kpartx -af /dev/sda
partx -a /dev/sda
1.3创建lvm逻辑卷,并设置开机自动挂载
(1)创建物理卷
# pvcreate /dev/sdb1
(2)创建卷组,卷组名为myvg
# vgcreate myvg /dev/sdb1
(3)创建逻辑卷,逻辑卷名为mydata,大小是10G,卷组是myvg
# lvcreate -L 10G -n mydata myvg
(4)将lvm设备格式化成ext4格式(格式化的目的是创建文件系统,以存储数据;这里面只有逻辑卷才能被格式化)
# mke2fs -t ext4 /dev/myvg/mydata
(5)设置lvm设备的开机自动挂载
# echo "/dev/myvg/mydata /mydata ext4 defaults,acl 0 0" >>/etc/fstab
(6)创建lvm设备的挂载点
# mkdir /mydata
(7)挂载测试,看lvm设备是否能被正常挂载
# mount -a
(8)查看lvm是否真的已经成功挂载
# df -hP /mydata/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-mydata 9.9G 151M 9.2G 2% /mydata
注:挂载测试,很重要,若不提前测试,一旦开机自动挂载的配置有问题,可能会导致系统无法启动,很严重滴。
2.(使用通用二进制格式)安装mariadb-10.0.10
(1)将mariadb解压至/usr/local/目录
# tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/
(2)切换至/usr/local/目录
# cd /usr/local/
(3)为mariadb创建软连接
# ln -sv mariadb-10.0.10-linux-x86_64 mysql
(4)添加名为mysql系统用户和系统组
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin mysql
(5)切换至mysql目录,修改该目录下所有文件的属主属组
# cd mysql/
# chown -R root.mysql ./*
(6)在/mydata目录下创建一个存储数据的目录data和二进制文件存放目录binlogs
# mkdir /mydata/{data,binlogs}
(7)修改数据目录的属主属组为mysql
# chown -R mysql.mysql /mydata/
(8)将mariadb添加为系统服务,并添加可执行权限及开机自启
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
(9)生成主配置文件my.cnf(\,屏蔽命令别名)
# \cp support-files/my-large.cnf /etc/my.cnf
(10)修改主配置文件my.cnf,添加或修改如下项
# vim /etc/my.cnf
innodb_file_per_table = on #启用一个单独的大事务
thread_concurrency = 2 #启用的sql线程数,一般设为物理核心的2倍
datadir=/mydata/data #指定数据存放目录
log-bin=/mydata/binlogs/mysql-bin #指定二进制日志文件的存放目录
binlog_format=mixed
(11)MariaDB服务初始化(以mysql用户的身份初始化数据目录)
./scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql
(12)将MariaDB的二进制程序添加至PATH路径,方便程序的执行(永久生效)
# echo ‘export PATH=/usr/local/mysql/bin/:$PATH‘ >/etc/profile.d/mysql.sh
# . /etc/profile.d/mysql.sh
(13)一切准备完毕,准备启动MariaDB服务
# service mysqld start
(14)连接至MariaDB数据库
# mysql #刚安装的数据库默认是没有密码的,即无需密码即可登录,生产环境必须及时为mysql的root用户设置密码
MariaDB [hellodb]> source /root/hellodb.sql; #导入sql语句,即插入数据,该sql语句位于/root目录下
MariaDB [hellodb]> SHOW DATABASES; #显示当前系统都有哪些数据库(hellodb是我们刚刚导入的)
+--------------------+
| Database |
+--------------------+
| hellodb |
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
很无奈,51cto总是提示字数超过15万字,不得不分成2篇....
lvm-snapshot:基于LVM快照的备份之准备工作,布布扣,bubuko.com