mysql主从复制

MysQL主从复制环境构建至少需2台服务器,可以配置1主多从,多主多从,以1主1
从为例,MySQ1.主从复制架构实战步骤如下。
(1)系统环境准备
master:192.168.0.134
slave:192.168.0.135
(2) master安装及配置
master端使用源码安装MySQl.5.5版本软件后,在/etc/my.cnf配置文件[ mysqld]段中加入如下代码,然后重启 MySQL服务即可,如果在安装时 cp my-large.cnf /etc/ my.cnf,则无须添加如下代码:
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= 256MB
max_allowed_packet= 1MB
table_open_cache=256MB
sort_buffer_size=1MB
read_buffer_size=1MB
read_rnd_buffer_size=4MB
myisam_sort_buffer_size=64MB
thread_cache_size=8
query_cache_size=16MB
thread_concurrency=8
log-bin=mysql-bin
binlog_format=mixed
server- id= 1
[mysqldump]
quick
max_allowed_packet=16MB
[ mysql]
no- auto- rehash
[myisamchk]
key_buffer_size= 128MB
sort_buffer_size= 128MB
read_buffer= 2MB
write_buffer= 2MB
[mysqlhotcopy]
interactive-timeout
在 master数据库服务器命令行中创建 tongbu用户及密码并设置权限,执行如下查看 bin-log文件及 position点,如图所示。
grant replication slave on . to ‘tongbu’@’%’ identified by ‘song123’;
show master status;

(3) slave安装及配置
slave:端使用源码安装MySQL 5.5版本 软件后,在/etc/my.cnf配置文件[ mysqld]段中加入如下代码,然后重启 MySQL服务即可,如果在安装时 cp my-large.cnf /etc/my.cnf,则需修改 server-id, master与 slave端 server-id不能一样,slave端无须开启 bin-log功能,代码如下:
server-id= 2
slave端/etc/my.cnf完整配置代码如下:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
skip-external-locking
key_buffer_size=256MB
max_allowed_packet=1MB
table_open_cache=256
sort_buffer_size=1MB
read_buffer_size=1MB
read_rnd_buffer_size=4MB
myisam_sort_buffer_size=64MB
thread_cache_size=8
query_cache_size= 16MB
thread_concurrency=8
server-id=2
[mysqldump]
quick
max_allowed_packet=16MB
no-auto-rehash
[myisamchk]
key_buffer_size=128MB
sort_buffer_size= 128MB
read_buffer=2MB
write_buffer=2MB
[mysqlhotcopy]
interactive- timeout
为slave指定 master IP、用户名、密码、 bin-log文件名( mysql-bin.00028)及position(257),
代码如下:
change master to
master_host=’192 168.0. 134’, master_use= ‘tongbu’, master_password=’song123’, master_log_
file='mysql - bin.000046’, master_log_pos=774;
如图:

在 slave中启动 slave start,并执行 show slave status\G查看 MySQL.主从状态,代码如下:
slave start;
show slave status\G
如图

查看 slave端I/O线程、SQL.线程状态均为Yes,代表 slave已正常连接 master实现同
步,代码如下:
slave_IO_ Running:Yes
slave_SQL_Running:Yes
执行 Show slave status\G,常见参数含义解析如下:
Slave_IO_State: I/O线程连接 master状态
Master_User:用于连接 master的用户
Master_Port_a: master端监听端口
Connect_Retry:主从连接失败,重试时间间隔。
Master_Log_File:I/O线程读取的 master二进制日志文件的名称。
Read_Master_Log_Pos:IO线程已读取的 master二进制日志文件的位置。
Relay_Log_File:SQL线程读取和执行的中继日志文件的名称
Relay_Log_Pos: SQL线程已读取和执行的中继日志文件的位置。
Relay_Master_Log_File:SQL线程执行的 master二进制日志文件的名称
Slave_IO_Running:I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running:SQL线程是否被启动。
Replicate_Do_DB:指定的同步的数据库列表
Skip_Counter:SQL_SLAVE_SKIP_COUNTER设置的值。
Seconds_Behind_Master:slave端SQL线程和1/O线程之间的时间差距,单位秒,常被用于主从延迟检查方法之一。
(4)进行测试:
在master端创建tongbu数据库和stu表,命令如下,详情如图所示
mysql> create database tongbu character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> use tongbu;
Database changed
mysql> create table stu(
-> sid int primary key auto_increment,
-> snam varchar(20),
-> sage int
-> )character set utf8;
Query OK, 0 rows affected (0.00 sec)
然后在slave库上进行查看,发现进行了随时进行了备份

MySQL.主从架构至此配置成功。

在master服务器stu表中插入两条数据,命令如下,在slave查看是否同步,master上执行详情如图所示。

Slave端执行查询命令,如图所示,表示master端插人的SQL数据已经同步到slave端

你可能感兴趣的:(mysql主从复制)