对于mysql的主从农成已经写了一篇文章来讲解了,所以看这篇文章之前如果不懂原理的亲们可以移步到:农成学mysql-mysql主存架构原理分析
对于这个配置mysql主从农成得吐槽一下网上的教程了,主要是大部分都是在本地测试的,不是在服务器间进行的,而农成这次分享的mysql中从配置则是在亚马逊云服务器之前进行的。所以网上很多方面的教程都没有涉及到的,农成这里在这篇文章都一一分析出来,希望以后为大家云服务器之间做主存提供一定的帮助,而不像农成这样花费了大量冤枉的路,到头来虽然实验了好多次也成功了,但是农成也是觉得很没有必要的,对于这样操作性的东西,浪费时间是很不该的。
mysql主从环境:
主服务器master:亚马逊云服务器 54.169.76.234
从服务器slave:亚马逊云服务器 54.169.25.73
两台服务器的系统环境:Ubuntu 14.04.2 LTS
两台服务器mysql的版本号:5.6.26 这里有一点要特别的声明:从数据库版本一定要高于等于主数据库的版本【ps:农成建议既然如果公司有两台云服务器来做mysql主从的话安装的时候一定要安装一样的版本这样就不会出现因为版本冲突而出现的错误了。】
配置master主服务器:
第一步:配置mysql的my.cnf文件 操作命令: vi /etc/mysql/my.cnf
第二步:在my.cnf文件中加入master的相关的信息
[mysqld]
log_bin = /data/mysql/logbin/mysql-bin #开启binlog日志
basedir = /data/mysql #指定mysql的安装目录
datadir = /data/mysqldb #指定mysql数据库的数据存放位置
port = 3306 #指定端口,默认是3306,如果一个主机有两个数据库需指定不同端口
server_id = 1 #指定server-id,必须与slave端的server-id不同
bind-address = 0.0.0.0 #默认是127.0.0.1,更改为0.0.0.0,否则Slave将无法链接到 Master
expire_logs_days = 10 #终止日志的时间,以天为单位,默认是30天
max_binlog_size = 100M #存放日志最大容量
sync-binlog=1 #允许日志同步
binlog_do_db = boss #配置要同步的数据库 非必要的字段 binlog_ignore_db = mysql #配置不需要同步的数据库
在这里农成要强调几句:
因为农成就是在这里犯了一个很大的错误,
第一个要大家很注意的是:就是server_id这个一定要设置为跟从服务器slave的不一样
第二个:就是那个同步的数据的配置就是这个东西:binlog_do_db = boss #配置要同步的数据库要特别特别的注意,因为农成是要配置多个数据库,如果这里配置了一个数据库的话,那么其他的数据库基本都是没有用的,我就是在这里费了好多的时间,后面配置成功发现数据没有同步就是个原因,这个是很大很大的原因哦!!!切记切记!因为一般配置主从肯定不止配置一个数据库,所以如果不需要配置就不配置吧!农成的忠告!
第三步:重启mysql的服务 操作命令:service mysqld restart
第四步:登录到mysql 操作命令:mysql -uroot -p123456
接下来的步骤很重要哦!
第五步:创建slave从服务器可以访问主服务器的账户
//给从服务器授权
grant replication client,replication slave on *.* to 'slaveuser'@'54.169.25.73' identified by 'slaveuser';
这一步也很重要哦,因为是云服务器,所以一定要保证云服务器的端口是开放的,如果因为端口不能登录的话就悲剧了,创建用户完成后可以执行下面的命令看看是不是创建成功了。
select user,host from mysql.user; //看看刚刚创建的是不是成功了
同时也可以在slave从服务器上面执行下面的语句,测试是不是真的可以登录到master主服务器上面
mysql -h54.169.76.234 -uroot -p123456//从服务器登录到主服务器的mysql
以上步骤全部完成证明用户已经有权限了。
第六步: 查看master状态
mysql> show master status \G;
*************************** 1. row ***************************
File: mysql-bin.000015 #binlog日志
Position: 211 #偏移量
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
ERROR:
No query specified
错误显示:
mysql>show master status;
Empty set (0.02 sec)
查询如果出现以上提示表示配置有问题;
这里也要强调一点,如果主数据库还一直在写入数据的话,那么此时你就要锁表了
mysql> flush tables with read lock;
然后记录下这个
File: mysql-bin.000015 #binlog日志
Position: 211 #偏移量
在释放表:
unlock tables;
到这里主服务器的配置就完全配置完成了。
第七步:配置slave服务器my.cnf文件
这个就很简单的,只要配置一个server_id 就可以
server_id = 2 #指定server-id,必须与master端的server-id不同
sync-binlog=1 #允许日志同步
read-only=1 #设置只读
然后重启从服务器的mysql服务
第八步:登录到slavemysql服务器
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
-> master_host=’54.169.76.234′, #指定主服务器地址
-> master_port=3306, #指定端口,默认是3306,不需要指定
-> master_user=’slave’, #指定同步时使用的用户名
-> master_password=’slave’, #指定同步用户的密码
-> master_log_file=’mysql-bin.000015′, #指定当前的主服务器使用的binlog日志
-> master_log_pos=120; #指定当前主服务器上的位偏移量
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
第九步:查看slave状态
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waitingformaster to sendevent
Master_Host: 54.169.76.234
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000015
Read_Master_Log_Pos: 120
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000015
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这样子就配置成功了。
Mysql主从同步搭建完成且可以正常工作,但其中有几点需要注意:
(1)设置slave服务器时在指定其主服务器时要在每个项目后面加逗号分隔
(2)如需更改slave服务器的主服务器的设置需要先停止slave服务,然后再更改,使用命令stop slave可以停止slave服务
(3)只有Slave_IO_Running与Slave_SQL_Running两个进程的状态全为Yse时才表明slave服务正常工作,否则都表示其工作异常。
Slave_IO_Running进程状态为NO的原因:
(1)连接不上主数据库服务器(物理线路,安全设置问题,授权问题)
(2)当前binlog日志名和pos点和主服务器的不一致
Slave_SQL_Running进程状态为NO的原因:从服务器本机没有主数据库上的库和表或者表结构不一致。
由于同步只会同步新插入的数据,所以在配置之前一定要保证两个数据库中数据库的表结构和数据保持一致!
未经允许不得转载:微信信息发源地 » 农成学mysql-配置mysql主从
评论前必须登录!
登陆 注册