Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270080
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 534
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-26 19:11
文章分类
文章存档

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秒之后超时,就会返回,主服务器会恢复到异步模式。

阅读(2639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~