2014年(42)
分类: Mysql/postgreSQL
2014-06-07 14:06:44
[]在编译安装 MySQL 5.5.x 之前,需要最少安装的包有:bison,gcc、gcc-c++、cmake、ncurses-devel,安装这些依赖包后,把原来解压出来的mysql源码目录删除掉,再重新解压出来,再去编译.
tar xzvf cmake-2.8.3.tar.gz
./bootstrap
gmake
gmake install
./configure --prefix=/usr
make&&make install
为安装Percona做准备
yum install libaio-devel
groupadd mysql
useradd -g mysql mysql
autoreconf --force --install
libtoolize --automake --force
automake --force --add-missing
mkdir -p /data/mbdata/open
tar xvfz mysql-5.5.20.tar.gz
yum --install cmake
time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mbdata/ -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==/data/mbdata/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
time make && make install
ll /usr/local/mysql/
chown -R mysql.mysql /usr/local/mysql/
type mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source /etc/profile
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mbdata
cd /data/mbdata
service mysqld start
chkconfig --add mysqld
【PS】半同步复制开启
MySQL AB复制原理:
Master 服务器 (主服务器) 通过把所有涉及到数据库更新操作都记录到二进制日志当中,
然后Slave 服务器(从服务器)就会通过IO_THREAD线程如连接主服务器,然后主服务器会通过IO_THREAD应答从服务器,然后开始传输二进制日志。从服务器接受到相应的日志记录之后,就会通过SQL_THREAD线程去执行日志当中记录的更改.
实现的级别:row level,statement level,mixed level
复制时延性:异步复制(MySQL AB复制天然属性),实时复制(MySQL + DRBD),半同步复制(>=5.5版本之后才有,暂时不算完善)
1、安装半同步复制的模块
master> install plugin rpl_semi_sync_master soname 'semisync_master.so'; 参数rpl_semi_sync_master_enabled=1 才生效。如果在安装的时候不注释掉,会报unknown variable 'rpl_semi_sync_master_enabled=1'的错误。
slave1> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
2、激活半同步复制
master> set global rpl_semi_sync_master_enabled = on;
slave> set global rpl_semi_sync_slave_enabled = on;
slave> stop slave IO_THREAD;
slave> start slave IO_THREAD;
master> show status like ‘rpl_semi_sync_master_status’;
+—————————–+——-+
| Variable_name | Value |
+—————————–+——-+
| Rpl_semi_sync_master_status | ON |
+—————————–+——-+
master> show status like ‘rpl_semi_sync_master_clients’;
+——————————+——-+
| Variable_name | Value |
+——————————+——-+
| Rpl_semi_sync_master_clients | 1 | <---说明一个从服务器是使用半同步模式
+------------------------------+-------+
3、确定正在使用半同步模式
master> insert into user values (8,’moto’);
master> show status like ‘Rpl_semi_sync_master_yes_tx’;
+—————————–+——-+
| Variable_name | Value |
+—————————–+——-+
| Rpl_semi_sync_master_yes_tx | 1 | <– 数值代表有多少个事务被从服务器确认
+—————————–+——-+
验证:
关闭master的网络,然后提交更新数据,发现会等待10秒才返回,因为主服务器在等待从服务器的确认,10秒之后超时,就会返回,主服务器会恢复到异步模式。