1.确定系统版本
[root@station253 ~]# head -n1 /etc/issueCentOS release 6.4 (Final)[root@station253 ~]# uname -r2.6.32-358.el6.x86_64[root@station253 ~]# cat /proc/version Linux version 2.6.32-358.el6.x86_64 [root@station253 ~]# ls /mnt/hgfs/Share64/mysqlmysql-5.5.33-linux2.6-x86_64.tar.gz此版本是绿色解压缩直接执行版本2.确定事先没有rpm包安装过mysql
[root@station253 ~]# rpm -qa | grep mysql3.安装所需要的库文件
[root@station253 ~]# yum -y install gcc gcc-c++ cmake bison4.创建用户和组
[root@station253 ~]# groupadd -r mysql## -r此参数是用来建立系统帐号。它会自动帮你选定一个小于499的gid[root@station253 ~]# useradd -g mysql -r -M -s /bin/nologin mysql## -g 所属组 –r 建立系统账号 –M 不建立用户家目录 –s 用户默认shell是禁止用户登陆系统[root@station253 ~]# id mysqluid=498(mysql) gid=499(mysql) groups=499(mysql)5.创建数据存放目录data
[root@station253 ~]# mkdir -pv /mydata/data## -p 连同父目录 –v 详细情况Mysql的数据文件应该独立存放。最起码是单独分区上,分区做成Raid5或Raid10,或者做成LVM逻辑卷。因此,这里先做逻辑卷,再将数据库存放到那里。[root@station253 ~]# fdisk /dev/sdaCommand (m for help): pDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c6755 Device Boot Start End Blocks Id System/dev/sda1 * 1 26 204800 83 Linux/dev/sda2 26 791 6144000 83 Linux/dev/sda3 791 918 1024000 83 Linux/dev/sda4 918 2611 13597696 5 Extended/dev/sda5 919 1046 1024000 82 Linux swap / SolarisCommand (m for help): nFirst cylinder (1046-2611, default 1046): Using default value 1046Last cylinder, +cylinders or +size{K,M,G} (1046-2611, default 2611): +5GCommand (m for help): nFirst cylinder (1700-2611, default 1700): Using default value 1700Last cylinder, +cylinders or +size{K,M,G} (1700-2611, default 2611): +5GCommand (m for help): tPartition number (1-7): 6Hex code (type L to list codes): 8e #创建一个新分区类型为8eChanged system type of partition 6 to 8e (Linux LVM)Command (m for help): tPartition number (1-7): 7Hex code (type L to list codes): 8eChanged system type of partition 7 to 8e (Linux LVM)Command (m for help): wThe partition table has been altered![root@station253 ~]# partprobe /dev/sda #RHEL5.x上partprobe在RHEL6.x下已经不适用,新命令partx-bash: partprobe: command not found[root@station253 ~]# partx -a /dev/sda #让内核重新读取分区BLKPG: Device or resource busyerror adding partition 1BLKPG: Device or resource busyerror adding partition 2BLKPG: Device or resource busyerror adding partition 3BLKPG: Device or resource busyerror adding partition 4BLKPG: Device or resource busyerror adding partition 5[root@station253 ~]# fdisk /dev/sda
Command (m for help): p/dev/sda6 1046 1699 5247314 8e Linux LVM/dev/sda7 1700 2353 5253223+ 8e Linux LVM[root@station253 ~]# vgcreate myvg /dev/sda{6,7}-bash: vgcreate: command not found#老版本的vgcreate是在新lvm2包中,安装[root@station253 ~]# yum -y install lvm2[root@station253 ~]# pvcreate /dev/sda{6,7} #创建物理卷 Physical volume "/dev/sda6" successfully created Physical volume "/dev/sda7" successfully created[root@station253 ~]# vgcreate myvg /dev/sda{6,7} #创建卷组 Volume group "myvg" successfully created[root@station253 ~]# vgs #查看卷组或命令lvdisplay VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 10.01g 10.01g[root@station253 ~]# lvcreate -L 5G -n mydata myvg #创建逻辑卷 Logical volume "mydata" created[root@station253 ~]# lvs #查看逻辑卷 LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mydata myvg -wi-a---- 5.00g [root@station253 ~]# mkfs.ext4 /dev/myvg/mydata #格式化mke2fs 1.41.12 (17-May-2010)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks327680 inodes, 1310720 blocks65536 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=134217728040 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736Writing inode tables: done Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 37 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.6. 挂载设置
[root@station253 ~]# vim /etc/fstab #修改挂载配置文件#新增一行/dev/myvg/mydata /mydata/data ext4 defaults 0 0 [root@station253 ~]# mount -a #挂载[root@station253 ~]# reboot #虚拟机挂载不出时重启系统[root@station253 ~]# mount|sort #查看所有挂载/dev/mapper/myvg-mydata on /mydata/data type ext4 (rw)[root@station253 ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/mapper/myvg-mydata ext4 5.0G 138M 4.6G 3% /mydata/data7.数据目录配置
[root@station253 ~]# chown -R mysql.mysql /mydata[root@station253 ~]# ll -d /mydatadrwxr-xr-x 3 mysql mysql 4096 Dec 14 17:11 /mydata[root@station253 ~]# ll -d /mydata/datadrwxr-xr-x 3 mysql mysql 4096 Dec 14 17:39 /mydata/data8.编译安装
[root@station253 ~]# cp /mnt/hgfs/Share64/mysql/mysql-5.5.33-linux2.6-x86_64.tar.gz /opt[root@station253 ~]# cd /opt[root@station253 opt]# tar zxvf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local[root@station253 opt]# ls /usr/local/mysql-5.5.33-linux2.6-x86_64/bin COPYING data docs include INSTALL-BINARY lib man mysql-test README scripts share sql-bench support-files[root@station253 opt]# cd /usr/local/[root@station253 local]# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql`mysql' -> `mysql-5.5.33-linux2.6-x86_64'生产环境下,做软连接是为写参数和升级方便[root@station253 mysql]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装目录-DMYSQL_DATADIR=/var/mysql/data \ #数据库存放目录-DMYSQL_USER=mysql \ #默认用户-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #Unix socket 文件路径-DDEFAULT_CHARSET=utf8 \ #使用 utf8 字符集-DDEFAULT_COLLATION=utf8_general_ci \ #校验字符集-DWITH_EXTRA_CHARSETS=all \ #安装所有扩展字符集-DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装 myisam 存储引擎-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb 存储引擎-DWITH_MEMORY_STORAGE_ENGINE=1 \ #安装 memory 存储引擎-DWITH_READLINE=1 \ #快捷键功能-DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据-DMYSQL_TCP_PORT=3306 #MySQL 监听端口-DWITH_SSL=yes \ #支持 SSLCMake Error The source directory usr local does not appear to contain CMakeLists.txt因此版本为绿色版,没有CMakeLists.txt如果之前因为库文件安装不全,编译失败,安装完全的库文件之后,再次编译失败,则需要删除编译文件。# rm -rf CMakeCache.txt9.配置mysql环境
#为Mysql提供Sysv服务脚本[root@station253 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld#添加执行权限并加入到系统服务[root@station253 mysql]# chmod +x /etc/rc.d/init.d/mysqld[root@station253 mysql]# chmod 755 /etc/init.d/mysqld[root@station253 mysql]# chkconfig --add mysqld#提供Mysql主配置文件,大于512MB内存使用该配置文件[root@station253 mysql]# cp support-files/my-large.cnf /etc/my.cnf#修改主配置文件数据存放目录位置[root@station253 mysql]# vim /etc/my.cnf在[mysqld]中最后添加38 datadir = /mydata/data40 thread_concurrency = 2 //8改成2,并发进程数是CPU颗数2倍#添加Mysql的PATH环境变量[root@station253 mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile[root@station253 mysql]# . /etc/profile#添加Mysql的库文件[root@station253 mysql]# echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf[root@station253 mysql]# ldconfig#添加Mysql头文件信息[root@station253 mysql]# ln -s /usr/local/mysql/include /usr/include/mysql#启动进程[root@station253 mysql]# service mysqld startStarting MySQL. ERROR! The server quit without updating PID file (/mydata/data/station253.example.com.pid).10.排错#查询错误日志[root@station253 mysql]# cat /mydata/data/station253.example.com.err 131214 19:03:22 mysqld_safe Starting mysqld daemon with databases from /mydata/data/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory131214 19:03:22 mysqld_safe mysqld from pid file /mydata/data/station253.example.com.pid ended#报错显示缺少共享库[root@station253 mysql]# rpm -qa | grep libaio#果然没有安装,安装它[root@station253 mysql]# yum -y install libaiolibaio-0.3.107-10.el6.x86_64.rpm#启动进程[root@station253 mysql]# service mysqld startStarting MySQL. ERROR! The server quit without updating PID file (/mydata/data/station253.example.com.pid).#查询错误日志[root@station253 mysql]# cat /mydata/data/station253.example.com.err | egrep 'Note|ERROR'131214 19:15:26 [Note] Plugin 'FEDERATED' is disabled.131214 19:15:26 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.131214 19:15:28 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306131214 19:15:28 [Note] - '0.0.0.0' resolves to '0.0.0.0';131214 19:15:28 [Note] Server socket created on IP: '0.0.0.0'.131214 19:15:28 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist#出错原因是没有初始化[root@station253 mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/dataInstalling MySQL system tables...OKFilling help tables...OK#安装成功[root@station253 mysql]# service mysqld startStarting MySQL... SUCCESS!