title: mysql主从 date: 2015-09-07 15:38:14 tags: [Mysql]

这篇题目占了好长时间了,一直说补上也没补上,今天没事,就弄个实验环境来记录一下。正所谓好记性不如烂笔头,那就写一下。

环境

  • 两台服务器
1
2
3
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
#其中62做master,63做salve, 66为VIP
  • mysql版本 mysql版本说明:mysqlAB复制版本都要高于3.2,slave版本可以高于master但不可以低于master
1
2
[root@localhost ~]# mysql -V
mysql  Ver 14.14 Distrib 5.6.32, for Linux (x86_64) using  EditLine wrapper

Master配置

  • 初始化mysql
1
2
/etc/init.d/mysql start
mysqladmin -uroot -parvon.top
  • 配置文件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#vim /etc/my.cfg
[mysqld]
server-id = 1
#backup这台设置2,
log-bin = arvon-mysql-bin
#binlog文件名称
binlog-ignore-db = mysql,information_schema
#忽略写入binlog日志的库
auto-increment-increment = 2
#字段变化增量值
auto-increment-offset = 1
#初始字段ID为1
slave-skip-errors = all
#忽略所有复制产生的错误
  • 添加slave读取master的用户和权限
1
2
3
mysql> grant replication slave on *.* to 'slave'@'172.17.18.63' identified by 'blog.arvon.top';
mysql> flush privileges;
#给slave用户读取master的权限密码为blog.arvon.top

Slave配置

  • 测试salve用户登录是否正常
1
mysql -h172.17.18.62 -uslave -pblog.arvon.top
  • 配置文件 先修改my.cnf文件,主要写入server-id,没有把后面server的主机端口密码信息直接写入配置文件是因为mysql5.5之后直接写会报错,mysql不认识,需要直接在mysql中用后面的命令指出。
1
server-id=2

mysql中要指出的变量,后面MASTER_LOG_FILE和MASTER_LOG_POS就是上面server配置端binglog和post的值

1
2
3
4
5
6
7
8
mysql> CHANGE MASTER TO MASTER_HOST='172.17.18.62',
   -> MASTER_PORT=3306,
   -> MASTER_USER='slave',
   -> MASTER_PASSWORD='blog.arvon.top',
   -> MASTER_LOG_FILE='arvon-mysql-bin.000001',
   -> MASTER_LOG_POS=120;
#启动slave进程
mysql> slave start;
  • 查看slave状态 共有两个线程一个为IO线程,一个为SQL进程,如图都为yes说明成功
1
mysql> show slave status\G;
  • 测试一下 在master创建一个database,然后去slave查看一下是否有了,我这反正测试时成功的,哈哈。