Mysql主从复制

一)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

Mysql主从复制,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。