Linux下MySQL主从数据库配置

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010785811/article/details/78583864

主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。

环境配置:

操作系统:CentOS-7 64位

基于VM虚拟机安装

网络模式:桥接

master数据库IP:172.16.110.37

slave数据库IP:172.16.110.39

mysql版本:5.7.20


master:主服务器 作为写数据库

slave:从服务器    作为读数据库


操作步骤:

前置操作:安装mysql等相关流程  详见mysql安装

  克隆虚拟机中的操作系统


1、 向master服务器添加新用户test

添加了test用户密码为password

赋予权限:REPLICATION SLAVE

	CREATE USER 'test'@'%' IDENTIFIED BY 'password';
	GRANT REPLICATION SLAVE ON *.* TO 'test'@'%';

2、 修改master配置

linux下mysql配置文件在  /etc/my.cnf

如果找不到可以使用查找一下

	find / -name my.cnf
修改内容如下:

	server-id=37 //该id可以随便写,我使用的ip末段为id
	binlog-do-db=world //仅同步该数据库
	log-bin=mysql-bin  //打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径,如:/home/www/mysql_bin_log/mysql-bin  
	       replicate-ignore-db=test //忽略同步的数据库这个我没设置,因为我只选择了同步一个库
重启mysql服务:service mysqld restart

执行show mastr status 记住 file名称和position值

mysql-bin.000002 154

3、切到slave服务器

配置文件添加如下内容

	server-id=39
	binlog-do-db = mydb //指定mysql的binlog日志记录哪个db
	log-bin=mysql-bin

执行

  CHANGE MASTER TO

MASTER_HOST='172.16.110.37',

MASTER_USER='test',

MASTER_PASSWORD='password',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=154;

执行:START slave;坑看下面

查看slave状态:show slave status\G

如果你遇到slave_io_running为no

那么不是你的网络不通

就是权限没设置好,

我装了三次,都是因为权限和网络引起的


里有个坑,因为是克隆的 uuid此时是相同的可能引起复制开启失败

我们删掉这个auto.cnf 文件,重启mysql即可生成新的

[root@linux bin]#  cat /var/lib/mysql/auto.cnf 
[auto]
server-uuid=df715735-c9aa-11e7-a58b-000c29a4990d

auto具体位置如不一致可以查找一下


没啥大问题了



展开阅读全文

mysql主从数据库配置出现诡异问题

12-22

在配置主从数据库后,主库插入数据,从库报错:Column 1 of table 'think_mysql.a' cannot be converted from type 'varchar(30)' to type 'varchar(10)', Error_code: 1677。rnrn以下是发生环境:rnrn首先是mysql的环境:rn1. 主数据库在centOS6.7中搭建,版本为5.7.16;rn[code=text]rn[mysqld]rnbasedir = /usr/local/mysqlrndatadir = /var/lib/mysql/datarnport = 3306rnsocket = /var/lib/mysql/mysql.sockrnuser = mysqlrnpid-file = /var/lib/mysql/mysql57.pidrnlog_error = /var/lib/mysql-error.logrnsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESrn#slave_type set this prototype to avoid the type convert failure, i dont know if it's useful or notrnslave_type_conversions=ALL_NON_LOSSYrnlog-output=FILErngeneral-log=0rngeneral-log_file=general_log.logrnslow-query-log=1rnslow_query_log_file=slow_log.logrnlong_query_time=2rnlog-error=error_log.errrnlog-bin=mysql_binary.logrnbinlog-do-db=think_mysqlrnbinlog-ignore-db=mysqlrnserver-id=1rnrn[/code]rnrn2. 从数据库在windows中,使用了wampserver集成套件中的mysql,版本为5.7.14rn[code=text]rn[mysqld]rnport = 3306rndefault-time_zone='+8:00'rnserver-id=14rnlog-bin=mysql-binary.logrnbinlog-do-db=think_mysqlrnrelay_log=mysqlRelayrnslave_type_conversions=ALL_NON_LOSSYrn[/code]rnrn使用change master将windows中的从库指向了linux库,并且slave status进入了Waiting for master to send event状态;rnrn在主库中创建一个新表:CREATE TABLE `A` (rn`id` int(11) NOT NULL ,rn`name` varchar(10) NULL ,rnPRIMARY KEY (`id`)rn);rnrn从库同步到了一个新表,没有出现问题;rnrn向主库的表中插入一行数据 insert into a (id,name) values(1,zhu);rn主库插入成功,从库报错:rn[ERROR] Slave SQL for channel '': Column 1 of table 'think_mysql.a' cannot be converted from type 'varchar(30)' to type 'varchar(10)', Error_code: 1677rn[ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql_binary.000001' position 595rn从库没有任何数据被插入并且后续插入也全都无效。rnrn主库reset master,从库reset slave,重新start slave后新建表,依然报错;rnrn根据报错内容搜索,在配置中加入slave_type_conversions=ALL_NON_LOSSY; 问题依旧。rnrn请问各位,这个问题应该如何解决?是mysql强制转换数据类型? 论坛

没有更多推荐了,返回首页