个人操做系统:rhel6,定制安装时选择base system为默认。developmet 选择的development-tools全部可选包。mysql
安装mysql5.5要求安装ncurses-devel包。个人系统没有装,从光盘yum安装或者rpm安装。sql
oracle新释出5.5版本要用cmake来编译源码包。因此还要安装cmake。我下载的cmake2.8,因而卸载了原系统的cmake2.6。数据库
编译时进入解压后的mysql目录,查看一下INSTALL-SOURCE文件,里面介绍了各类操做系统平台mysql的安装方法。不过我大略看了一下好像是没写怎么定制安装。这时咱们能够打开同目录下的BUILD-CMAKE文件,里面介绍了如何使用cmake来configuration parameters。因而咱们能够在当前目录下输入cmake -L;要查看带简短解释的编译属性用cmake -LH;再全一点能够用cmake -LAH。bash
这里我把安装cmake和mysql的过程写入了一个脚本:架构
#! /bin/bash
cmakever=cmake-2.8.3
mysqlver=mysql-5.5.12
mysql_home=/usr/local/mysql
########################
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
mkdir /opt/data
chown -R mysql.mysql /opt/data
mkdir /usr/local/mysql
tar zxvf $cmakever.tar.gz
cd $cmakever
./configure;make;make install
cd -
tar zxvf $mysqlver.tar.gz
cd $mysqlver
cmake . -DCMAKE_INSTALL_PREFIX=$mysql_home \oracle
-DINSTALL_DATADIR=/opt/data -DDEFAULT_CHARSET=utf8 \ide
-DEXTAR_CHARSETS=all -DENABLED_LOCAL_INFILE=1 \性能
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_E \
MBEDDED_SERVER=1
make;make install
cp -f $mysql_home/support-files/my-medium.cnf /etc/my.cnf
sed -e '/\[client\]/a\default_character_set=utf8' -e '/\[mysqld\]/a\character_set_server=utf8\n\datadir=/opt/data'/etc/my.cnf > /etc/my.cnf.new
mv /etc/my.cnf /etc/my.cnf.old
mv /etc/my.cnf.new /etc/my.cnf
$mysql_home/scripts/mysql_install_db --datadir=/opt/data --basedir=$mysql_home \测试
--user=mysql > /dev/null 2>&1
#./bin/mysqld_safe --user=mysql & > /dev/null 2>&1
cp -f $mysql_home/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig --level 35 mysqld on
echo "export PATH=$PATH:$mysql_home/bin" >> /etc/profile
source /etc/profile
service mysqld start编码
注:两个标红的地方都是一行,其中第一个是我定制的编译选项,第二个是用sed在my.cnf中加入字符编码和数据目录。由于我在安装时自定义了数据目录。若是不编辑默认的配置文件老是在mysql_install_db那一步就出错。
====================================
下面该配置主从复制了,但我看之前的一些文档甚至”原装“的my.cnf,须要在从机的配置文件中声明主机的IP,端口,赋予权限的用户,密码等信息,但新版本的好像并不支持这些选项了。好比我打开master-host="主机IP",重启mysql时错误日志提示不认识这个选项。
干脆省事不开这些选项了,也不影响正常功能。
个人 主机:192.168.0.30
从机:192.168.0.40
主机操做:
(1)能够编辑my.cnf自定义二进制日志的位置等信息。我没有改动任何选项,只是保证二进制日志选项是打开的。
(2)登入mysql创建一个用户,并赋予replication slave权限:
mysql>grant replication slave on *.* to slaveuser@192.168.0.40 identified by '123456' ;
mysql>flush privileges;
mysql>show master status;
记录下二进制日志文件名和位置,以下:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 | 295 | | |
+------------------+----------+--------------+-------------------+
从机操做:
(1)编辑my.cnf,把server-id改为不和主机相同的数字。若是只想同步指定的数据库,能够添加 replicate-do-db = yourdatabase,同步几个就复制几个,把数据库名改了就好。
(2)登入mysql,输入一下命令:
mysql>change master to master_host='192.168.0.30',master_user='slaveuser',master_password='123456',
master_log_file='mysql-bin.000007',master_log_pos=295;
mysql>start slave;
mysql>show slave status\G;
若是出现: Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两项都为Yes,那说明没问题了。若是指定了个别的数据库,还能够看到:
Replicate_Do_DB: yourdatabase。很明白的看到是同步了哪几个数据库。
注:(1)若是出现Slave_SQL_Running:connecting的现象,首先在从机命令行下输入:
#mysql -uslaveuser -h 192.168.0.30 -p123456
看是否能登入mysql,若是是拒绝等提示,那要查看主机上的第(2)操做是否用户的权限等设置正确。
(2)若是开始的环境不是主从架构,跑了一段时间已经有了数据,这时候要先在主机上加锁:flush tables with read lock;
打包主机的数据目录: #tar zcf /tmpdatabak.tgz /opt/data,拷贝这个压缩包到从机,解压后,作主从的配置。
而后解锁:unlock tables;
==============================================
主从机制主要实现了数据库读操做的负载,能够设置多历来分担主的读操做。写仍是要在主上进行,不要在从库上作增删改的操做,像我开始同样菜就麻烦了,删除了从库数据但主库不会再同步了。即便是设置了互为主从,为避免数据冲突,写仍是要由其中一台主来完成。为了实现高效的数据库性能,咱们能够作成读写分离。之后我测试完贴出来。也但愿有实际应用的朋友们给我借鉴一下经验!
切记:从库的做用就是读负载,以及备份的做用。固然真正的备份也仍是要在主库上来作的。若是主库挂掉了,能够尝试把其中一台从库切换成主库。操做就是先而后中止slave;加锁;接下来按照以上操做就能够了。