一)Mysql主从复制图解
二)实现过程
注意事项:
主和从mysql版本需要一致,如果不一致,主的必须低于从的,如果是新的主机刚安装的服务,复制都是从0开始,如果主服务器已经运行过了一段时间,并且存在了数据集,这时就需要把主服务器备份后,然后从主服务器备份的时所处的位置进行开始复制。
大致的配置过程:
1)修改Server-id,主和从的不能一致
2)主服务器启动二进制日志
3)主服务器创建一个账号给从使用
4)从服务器需要启动中继日志,不需要启动binlog二进制日志
5)使用主服务器授权的账号,进行连接主服务器
6)启动从服务器,从而主从复制开始
具体操作如下:
1)服务器的版本,主从均是一样的系统版本。
[root@station141 ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m Mage Education Learning Services http://www.magedu.com [root@station141 ~]# uname -r 2.6.32-358.el6.x86_64 [root@station141 ~]# uname -a Linux station141.magelinux.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [root@station141 ~]# uname -n station141.magelinux.com [root@station141 ~]# uname -m x86_64
2)mysql的安装这里使用的是源码编译安装的
安装依赖包和cmake yum -y install readline-devel zlib-devel openssl-devel cmake gcc gcc-c++ make cmake ncurses-devel libtool yum groupinstall “Development tools”
tar xf mysql-5.5.33.tar.gz mkdir /mydata/data -p groupadd -r mysql useradd -g mysql -r -d /mydata/data mysql cd mysql-5.5.33 [root@localhost mysql-5.5.33]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ciWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_c
ps:
如果编译的时候报错的话,删除CMakeCache.txt这个文件,在重新执行编译即可。
make && make install chown :mysql ./* -R chown -R mysql.mysql /mydata/data/ scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ 数据初始化 cp support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld cp support-files/my-large.cnf /etc/my.cnf mkdir -pv /mydata/data vim /etc/my.cnf datadir = /mydata/data存放数据路径
vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH 启动mysqld service mysqld restart
安装完成。主从安装同上。
主操作:
vim /etc/my.cnf
log-bin=/mydata/data/mysql-bin目录随便定义
server-id = 1
创建目录,并且修改权限
mkdir -pv /mydata/binlogs/
chown -R mysql.mysql /mydata/binlogs/
启动mysql
[root@station141 ~]# /etc/init.d/mysqld restart
创建账号授权的账号为Andy,密码为Andy.com.
grant replication slave,replication client on *.* to ‘Andy’@‘172.16.%.%‘ identified by ‘Andy.com‘;
刷新授权表,让创建的用户立刻生效
flush privileges;
从服务器操作:
vim /etc/my.cnf
server-id = 10
relay-log = /mydata/relaylogs/relay-bin中继日志路径
关闭binlog
log-bin=OFF或者注释掉
复制权限:
chown -R mysql.mysql /mydata/relaylogs/
启动服务器:
/etc/init.d/mysqld restart
查看中继日志是否启动
mysql> show global variables like ‘%relay%‘; +-----------------------+-----------------------------+ | Variable_name | Value | +-----------------------+-----------------------------+ | max_relay_log_size | 0 | | relay_log | /mydata/relaylogs/relay-bin | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_recovery | OFF | | relay_log_space_limit | 0 | | sync_relay_log | 0 | | sync_relay_log_info | 0 | +-----------------------+-----------------------------+ 9 rows in set (0.12 sec)
连接主服务器:
change master to master_host=’172.16.100.7‘,master_user=’Andy‘,master_password=‘Andy.com’;
启动从服务器线程:
start slave
查看从服务器的两个线程是否都已启动
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
主服务器创建库测试同步
从服务器上查看
PS:
主从复制完成。
本文出自 “落叶飘远方” 博客,请务必保留此出处http://shunzi.blog.51cto.com/8289655/1394383