当前环境
ip : 192.168.1.153
系统版本
当前虚拟机还没安装任何版本的mysql和mariadb包:
注意如果此前已经安装过mysql-server的rpm包而希望使用通用二进制格式安装mariadb时一定要把mysql-server完全卸载或把mysqld服务关掉并确保它不会开机自动启动。使用通用二进制格式安装mariadb之前尽可能不要安装mysql-server
使用通用二进制格式安装mariadb
1、下载mariadb-5.5.36-linux-x86_64.tar.gz
2、解压、创建软链接软链接为以后mariadb的升级提供了便利
#使用-C选项指定展开归档的目录
[root@localhost ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local [root@localhost ~]# cd /usr/local
#为mariadb-5.5.36-linux-x86_64创建链接目录目录名一定要为mysql
[root@localhost local]# ln -sv mariadb-5.5.36-linux-x86_64 mysql [root@localhost local]# cd mysql
3、把lvm逻辑卷作为数据库数据的存放位置
建议在生产环境中最好把数据库的数据存放到lvm的逻辑卷中底层lvm应该通过硬件raidraid10来搭建。
好处
随着数据的增多存储空间不够用时能动态扩展存储空间大小。
能利用lvm逻辑卷的快照功能对数据进行备份。
注意实际生产环境中不要把数据库的数据存放到系统磁盘的逻辑卷上以免系统磁盘损坏而导致数据库的数据丢失。
(1)在非系统磁盘上创建逻辑卷mydata
[root@localhost ~]# fdisk -l /dev/sdb1 Disk /dev/sdb1: 32.2 GB, 32218389504 bytes [root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created [root@localhost ~]# vgcreate myvg /dev/sdb1 Volume group "myvg" successfully created [root@localhost ~]# lvcreate -L 10G -n mydata myvg Logical volume "mydata" created [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mydata myvg -wi-a----- 10.00g
(2)格式化逻辑卷mydata
[root@localhost ~]# mke2fs -t ext4 -m 3 -L MYDATA -b 4096 /dev/myvg/mydata
(3)逻辑卷mydata挂载至/mydata目录下并在该目录下新建一个目录data来存放数据。
[root@localhost ~]# mkdir /mydata [root@localhost ~]# vim /etc/fstab #设定开机自动挂载
[root@localhost ~]# mount -a [root@localhost ~]# mount /dev/mapper/myvg-mydata on /mydata type ext4 (rw) [root@localhost ~]# mkdir /mydata/data
(4)创建mysql系统用户和mysql系统组
[root@localhost ~]# groupadd -r mysql [root@localhost ~]# useradd -g mysql -r mysql [root@localhost ~]# id mysql uid=496(mysql) gid=493(mysql) groups=493(mysql)
(5)为了安全运行mysql服务使用的是普通用户不能使用管理员身份运行mysql。
将/mydata/data目录及其目录下的所有文件的属主、属组都设成mysql
[root@localhost ~]# chown -R mysql.mysql /mydata/data [root@localhost ~]# ll -d /mydata/data drwxr-xr-x 2 mysql mysql 4096 Aug 9 06:30 /mydata/data
#修改/usr/local/mysql/目录及其目录下所有的文件的属主为root属组为mysql 因是编译安装为了能让mysql系统用户正常运行属组一定要设为mysql。
[root@localhost ~]# chown -R root.mysql /usr/local/mysql/
4、为mysql提供配置文件
[root@localhost ~]# mkdir /etc/mysql [root@localhost ~]# cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf
注意不能把my-large.cnf复制成/etc/my.cnf因为系统默认安装了mysql-libs(它已经提供/etc/my.cnf)为了避免发生错误把配置文件放到/etc/mysql/my.cnf
编辑 /etc/mysql/my.cnf并在[mysqld]中指定数据库中数据存放的位置
[mysqld] # Try number of CPU's*2 for thread_concurrency #指定最大并发线程数 thread_concurrency = 4 #改为自身cpu核心数*2 datadir = /mydata/data #数据库中数据存放的路径
5、初始化mysql数据库
注意如果你按以下方式执行会发生错误不能在 scripts目录下执行mysql_install_db脚本因为该脚本依赖于mysql目录下的/bin/my_print_defaults。
[root@localhost mysql]# cd scripts/ [root@localhost scripts]# ./mysql_install_db --datadir=/mydata/data --user=mysql FATAL ERROR: Could not find ./bin/my_print_defaults
正常做法
[root@localhost scripts]# cd .. [root@localhost mysql]# scripts/mysql_install_db --datadir=/mydata/data --user=mysql
查看/mydata/data目录中是否已生成mysql默认数据库
[root@localhost mysql]# ls /mydata/data aria_log.00000001 mysql mysql-bin.000002 performance_schema aria_log_control mysql-bin.000001 mysql-bin.index test
6、为mysql提供服务启动脚本
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mysql]# ll /etc/rc.d/init.d/mysqld # 确保该脚本有执行权限 -rwxr-xr-x 1 root root 11844 Aug 9 07:59 /etc/rc.d/init.d/mysqld [root@localhost mysql]# chkconfig --add mysqld # 把mysqld添加到服务列表中 [root@localhost mysql]# chkconfig --list mysqld # 默认开机自动启动 mysqld 0:off1:off2:on3:on4:on5:on6:off
7、导出mysql的二进制文件、头文件、库文件、帮助文档
导出二进制程序
[root@localhost mysql]# vim /etc/profile.d/mysql.sh [root@localhost mysql]# cat /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH [root@localhost mysql]# source /etc/profile.d/mysql.sh [root@localhost mysql]# echo $PATH /usr/local/mysql/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
导出头文件
[root@localhost mysql]# ln -s /usr/local/mysql/include/ /usr/include/mysql [root@localhost mysql]# ll /usr/include/mysql lrwxrwxrwx 1 root root 25 Aug 9 08:13 /usr/include/mysql -> /usr/local/mysql/include/
导出帮助文档
[root@localhost mysql]# vim /etc/man.config MANPATH /usr/loacl/mysql/man #添加此项
导出库文件
[root@localhost mysql]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf [root@localhost mysql]# ldconfig -v | grep mysql /usr/local/mysql/lib: #新版本的库文件 libmysqld.so.18 -> libmysqld.so.18 libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0 /usr/lib64/mysql: #旧版本的库文件 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
8、启动服务
[root@localhost mysql]# service mysqld start Starting MySQL..... [ OK ] [root@localhost mysql]# ss -tnl | grep 3306 LISTEN 0 50 *:3306 *:* [root@localhost ~]# ll /tmp/*.sock srwxrwxrwx 1 mysql mysql 0 Aug 19 00:59 /tmp/mysql.sock
上面这个文件由服务产生本地客户端可以以此设备文件连接Mysql服务
注意
当mysqld服务停止时该mysql.sock文件也会被删除
[root@localhost ~]# service mysqld stop Shutting down MySQL... [ OK ] [root@localhost ~]# ll /tmp/*.sock ls: cannot access /tmp/*.sock: No such file or directory
9、登录mysql服务器
[root@localhost mysql]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.36-MariaDB-log MariaDB Server Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.07 sec)
能正常访问!