mysql主从复制

1、主从服务器版本一致(主版本可低于从版本)

2、网络连通性

3、一个拥有复制权限的账户,便于从服务器进行复制

4、干净的环境,没有RPM包安装过的mysql

版本:5.6.13

二进制版本:

http://dev.mysql.com/downloads/mirror.php?id=413946

源码版本

http://dev.mysql.com/downloads/mirror.php?id=413981

 

-1 mysql的安装

groupadd mysql

useradd -g mysql mysql

 

tar xv mysql* 

cd mysql*

*******************************编译安装*********************************

(若为二进制版本,则不需要这一步)

cmake . 

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_DEBUG=0 \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \

(配置文件不满意,可以删除目录下的CMakeCache.txt)

make && make install

*******************************配置mysql*******************************

cd /usr/local/mysql

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld 

chkconfig --level 2345 mysqld on 

cp support-files/my-medium.cnf /etc/my.cnf(版本5.6.13没有找到模版,复制default)

*******************************配置mysql*******************************

log_bin = /usr/local/mysql/log/mysql-bin

basedir = /usr/local/mysql  

datadir = /usr/local/mysql/data  

port = 3306  

server_id = 1  

socket = /tmp/mysql.sock

*******************************初始化mysql******************************

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

*******************************data和log写权限***************************

chown -R root:mysql /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql/data

chown -R mysql:mysql /usr/local/mysql/log

*******************************环境变量*********************************

vim ~/.bash_profile

PATH=$PATH:$home/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

source /root/.bash_profile

 

 

-2 服务器配置文件

--1 主服务器(需重启mysql)(定义事物提交后将日志从内存转移至磁盘,同时立即刷新日志,将数据写入磁盘)

log-bin=mysql-bin

server-id=1

sync-binlog=1

innodb-flush-logs-at-trx-commit=1

--2 从服务器(需重启mysql)(定义从服务器只读,并关闭bin日志,同时slave服务定义为手动)

#log-bin=

relay-log=relay-bin

relay-log-index=relay-bin.index

server-id=11

skip-slave-start=1

read-only=1

-3 mysql配置

--1 主服务器(192.168.1.1)授权,获取最后阶段的日志记录位置,并备份当前数据库(--lock-all-tables备份前锁表,备份后自动解锁;--master-data=2 记录CHANGE MASTER TO MASTER_LOG_FILE和MASTER_LOG-POS)

mysql -uroot

>grant replication client,replication slave on *.* to repl@'192.168.1.%' identified by '123456';

>show master status;

>

*************************** 1. row ***************************
File: mysql-bin.000009
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

>\q

mysqldump --all-databases --lock-all-tables --master-data=2 -p密码 > /root/slave.sql

scp /root/slave.sql root@192.168.1.1:/usr/local/mysql

 

--2 从服务器(192.168.1.2)恢复数据库,设置连接属性,并开启复制

mysql -uroot

>source /usr/local/mysql;

>change master to MASTER_HOST='192.168.1.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS='107';

>start slave;

 

-4 半同步模式(降低同步延迟问题)

--1 半同步模式需要插件支持,默认插件位置在/usr/local/mysql/lib/plugin

--2 主服务器

mysql -uroot

>install plugin rpl_semi_sync_master scname 'semisync_master.so';

>set global rpl_semi_sync_master_enable=1;

>set global rpl_semi_sync_master_timeout=1000; 

--3 从服务器

mysql -uroot

>install plugin rpl_semi_sync_slave scname 'semisync_slave.so';

>set global rpl_semi_sync_slave_enable=1;

>set global rpl_semi_sync_slave_timeout=1000;

>stop slave;

>start slave;

 

-5 监控状态

--1 主从复制异步重要变量

>show slave status;

获取如下,两个皆为yes正常,有一个不为yes,则有问题

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

--2 半同步重要变量

重要变量:

>show global variables like 'rpl_%';

获取如下

表明连接slave数量

rpl_semi_sync_master_client=n

表明半同步是否启用,1活动,0非活动

rpl_semi_sync_master_status=1

表明半同步是否启用。I/O线程是否启用,1活动,0非活动

rpl_semi_sync_slave_status=1

posted @ 2013-09-02 15:39  星空刺  阅读(267)  评论(0编辑  收藏  举报