MYSQL主从复制实战

Mysql主从复制原理

1.Mysql主从复制目的是为了备份主库数据,方便及时恢复数据,分担主库压力。

2.Mysql主从复制属于异步复制过程,整个过程需要开启三个线程:Master侧开启I/O线程,Slave侧开启I/O、SQL线程。

3.Master侧开启bin-log二进制日志功能,bin-log日志主要用来记录增、删、改、更新操作的SQL语句。

4.Slave侧通过I/O线程来读取Master的bin-log文件内容,并把内容存储在本地的中继日志relay-log中,同时会写入master.info文件(该文件记录master IP、端口、同步的用户名、密码、bin-log文件名以及最新的position位置点),供下次数据同步使用。

5.Slave侧SQL线程检测到中继日志内容有更新,解析更新的SQL语句,并在本地数据库执行,保持Slave和Master数据同步的。



主从复制安装配置

1.系统环境准备

Master:192.168.241.133

Slave:192.168.241.135

2.安装

源码安装参考:
http://blog.csdn.net/scott_bing/article/details/78261789
Yum安装:

yum install  mysql-server  mysql-devel mysql-libs  -y  CentOS6.x YUM安装

yum  install mariadb-server mariadb   mariadb-libs -y  CentOS7.x YUM安装

3.Master侧配置

在/etc/my.cnf中[mysqld]下添加以下代码,配置完后重启mysql服务

server-id = 1
log-bin = mysql-bin
Master侧/etc/my.cnf完整配置如下:

[client]

port        = 3306

socket     = /tmp/mysql.sock

[mysqld]

port        = 3306

socket     = /tmp/mysql.sock

skip-external-locking

key_buffer_size =256M

max_allowed_packet= 1M

table_open_cache= 256

sort_buffer_size= 1M

read_buffer_size= 1M

read_rnd_buffer_size= 4M

myisam_sort_buffer_size= 64M

thread_cache_size= 8

query_cache_size=16M

thread_concurrency= 8

log-bin=mysql-bin

binlog_format=mixed

server-id  = 1

[mysqldump]

quick

max_allowed_packet= 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size =128M

sort_buffer_size= 128M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

创建供Slave库进行同步的用户、密码,执行如下命令,最后查看主库的状态

grant  replication slave  on *.* to  'tongbu'@'%' identified by  '123456';

flush privilege;

执行show master status 查看主库的状态

4.Slave侧配置

在/etc/my.cnf中[mysqld]段添加以下代码:

server-id  = 2    该值配置与master不一致即可

/etc/my.cnf完整配置:

[client]

port        = 3306

socket     = /tmp/mysql.sock

[mysqld]

server-id  = 2

port        = 3306

socket     = /tmp/mysql.sock

skip-external-locking

key_buffer_size =256M

max_allowed_packet= 1M

table_open_cache= 256

sort_buffer_size= 1M

read_buffer_size= 1M

read_rnd_buffer_size= 4M

myisam_sort_buffer_size= 64M

thread_cache_size= 8

query_cache_size=16M

thread_concurrency= 8

[mysqldump]

quick

max_allowed_packet= 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size =128M

sort_buffer_size= 128M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

Slave指定Master IP、用户名、密码、bin-log文件名(mysql-bin.000010)及position(120),代码如下:

change master to master_host='192.168.241.133',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000010',master_log_pos=120;
启动slave,查看slave的I/O线程、SQL线程状态均为YES,代表Slave正常连接Master实现同步

start slave;
show slave status;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5.测试

Master侧创建db_test数据库和tb_01表,命令如下:

create database  db_test charset=utf8;
show databases;
use db_test;
create table tb_01(id varchar(20),name varchar(20));
show tables;

Slave侧查看是否有数据库db_test和表tb_01,若有则表示Slave从Master复制数据成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章