mysql主从配置(5分钟解决问题)

条件:一台阿里云服务器(centos 6.6 +mysql 5.6)

          一台腾讯云服务器(centos 7.2 +mysql 5.6)

注:主库和从库版本可以一致也可以不一致,需要说明一点,如果两者版本不一致,一般主库的版本需要比从库的版本低,这样就可以避免由于版本问题,有些sql不能执行的问题。当然学习环境可以不同,但是生产环境必须要要,系统和数据版本要相同的

前置步骤:重置mysql密码,让mysql能外网访问。

Master  config

正式步骤:1.修改 Master 的配置文件/etc/my.[root@edu-mysql-01 ~]# vi /etc/my.cnf

## [mysqld] 中增加以下配置项
## 设置 server_id,一般设置为 IP
server_id=205
## 复制过滤: 需要备份的数据库, 输出 binlog
#binlog-do-db=roncoo
## 复制过滤: 不需要备份的数据库, 不输出(mysql 库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能, 可以随便取, 最好有含义
log-bin=edu-mysql-bin
## 为每个 session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是 statement
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。
## 如: 1062 错误是指一些主键重复, 1032 错误是因为主从数据库数据不一致
slave_skip_errors=1062

 

2.重启mysql 

/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)

3.创建同步用户

(登陆mysql)

##创建数据同步用户,并授予相应的权限(用户名+ip+密码)
mysql> grant replication slave, replication client on *.* to 'repl'@'192.168.1.206' identified by
'roncoo.123';
Query OK, 0 rows affected (0.00 sec)
## 刷新授权表信息
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
## 查看 position 号, 记下 position 号(从机上需要用到这个 position 号和现在的日志文件)
mysql> show master status;

(slave config)

4.从配置

## [mysqld] 中增加以下配置项
## 设置 server_id,一般设置为 IP
server_id=206
## 复制过滤: 需要备份的数据库,输出 binlog
#binlog-do-db=roncoo
##复制过滤: 不需要备份的数据库, 不输出(mysql 库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志,以备 Slave 作为其它 Slave Master 时使用
log-bin=edu-mysql-slave1-bin
## 为每个 session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size = 1M
## 主从复制的格式(mixed,statement,row,默认格式是 statement
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。
## 如: 1062 错误是指一些主键重复, 1032 错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log 配置中继日志
relay_log=edu-mysql-relay-bin
## log_slave_updates 表示 slave 将复制事件写进自己的二进制日志
log_slave_updates=1
## 防止改变数据(除了特殊的线程)
read_only=1

 

 

主从配置总结

Master /etc/my.cnf

[mysqld]中增加

## replication
server_id=205
#binlog-do-db=roncoo
binlog-ignore-db=mysql
log-bin=edu-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062


Slave /etc/my.cnf

[mysqld]中增加

## replication
server_id=206
#binlog-do-db=roncoo
binlog-ignore-db=mysql
log-bin=edu-mysql-slave1-bin
binlog_cache_size = 1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=edu-mysql-relay-bin
log_slave_updates=1
read_only=1

 

5.重启从mysql服务器,登陆从myql数据库

6.创建同步用户(注意 master_log_file    and   master_log_pos)

mysql> change master to master_host='192.168.1.205', master_user='repl',
master_password='roncoo.123', master_port=3306, master_log_file='edu-mysql-bin.000001',
master_log_pos=1389, master_connect_retry=30;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

## 刷新授权表信息
mysql> flush privileges;

 

 

7.开启监听线程

## 查看主从同步状态
mysql> show slave status\G;
可看到 Slave_IO_State 为空, Slave_IO_Running Slave_SQL_Running No, 表明 Slave
没有开始复制过程。
## 开启主从同步
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
## 再查看主从同步状态
mysql> show slave status\G;

 

 

 

posted @ 2018-07-30 21:41  危常焕  阅读(797)  评论(0编辑  收藏  举报