设为首页 加入收藏

TOP

MySQL主从复制资料汇总(二)
2015-07-24 10:18:37 来源: 作者: 【 】 浏览:1
Tags:MySQL 主从 复制 资料 汇总
---------------------------------------+-------------------+ | mysql-bin.000151 | 120 | user_db |mysql,test,information_schema,performance_schema | | +------------------+----------+--------------+--------------------------------------------------+-------------------+ 1 row in set (0.00 sec) mysql> mysql> show master status\G; *************************** 1. row*************************** File: mysql-bin.000151 Position: 120 Binlog_Do_DB: user_db Binlog_Ignore_DB:mysql,test,information_schema,performance_schema Executed_Gtid_Set: 1 row in set (0.00 sec) ERROR: No query specified mysql>

4.4 配置slave从库(192.168.52.130)

Slave的配置与master库类似,如下所示:

Vim /etc/my.cnf

#------------------Master-Slaveconfig-----------------

log-slave-updates=1

replicate-same-server-id=0

server-id=230 # Server ID

log-bin=/home/data/mysql/binlog/mysql-bin.log

relay-log=mysql-relay-bin

master-info-repository=TABLE

relay-log-info-repository=TABLE

binlog-ignore-db=mysql # No sync databases

binlog-ignore-db=test # No sync databases

binlog-ignore-db=information_schema # No sync databases

binlog-ignore-db=performance_schema

binlog-do-db=user_db

expire-logs-days=10

max_binlog_size = 10485760

server_id 是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置 bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。

relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。

有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

配置玩,重启slave数据库

mysql> show slave status;

Empty set (0.05 sec)

mysql>

没有记录,需要设置一些主从配置。

4.5 设置主从连接复制

生成CHANGE MASTER语句,然后在从上执行,master信息,从备份集合里面获取:

xtrabackup备份的话,从xtrabackup_binlog_info里面获取,如下所示:

[root@data02 tmp]#tar -xvfbackup_slave.tar.gz

[root@data02 tmp]#cd backup_slave

[root@data02 backup_slave]# morextrabackup_binlog_info

mysql-bin.000141 120

[root@data02 backup_slave]#

Mysqldump的啊,从sql文件的头几列获取,如下所示:

[root@data02 tmp]#cd /tmp/

[root@data02 tmp]#gunzip alldb.sql.gz

[root@data02 tmp]# more alldb.sql |grep"CHANGE MASTER TO MASTER_LOG_FILE" |grep "MASTER_LOG_POS"|more

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000141',MASTER_LOG_POS=120;

生成changemaster语句,如下:

CHANGE MASTER TO MASTER_HOST='192.168.52.129',

MASTER_USER='repl',

MASTER_PASSWORD='repl_1234',

MASTER_LOG_FILE='mysql-bin.000141',

MASTER_LOG_POS=120;

有报错信息:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.52.129',

-> MASTER_USER='repl',

-> MASTER_PASSWORD='repl_1234',

-> MASTER_LOG_FILE='mysql-bin.000141',

-> MASTER_LOG_POS=120;

ERROR 1794 (HY000): Slave is not configuredor failed to initialize properly. You must at least set --server-id to enableeither a master or a slave. Additional error messages can be found in the MySQLerror log.

mysql>

具体原因目前不详,网上查找到的资料:数据库打开这几张表的默认引擎为MyISAM,但是这几张表在建表时的引擎为INNODB

但是能确定的,这几张表确实是在mysql5.6中新入的

innodb_index_stats,

innodb_tables_stats,

slave_master_info,

slave_relay_log_info,

slave_worker_info

解决方法:

登录数据库,进入mysql库,执行如下SQL删除5张表

记住,一定要是drop table if

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL事务学习 --> 分布式事务 下一篇mysql索引的设计和使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)
·关于 MySQL 数据库学 (2025-12-26 23:20:16)
·SOLVED: Ubuntu 24.0 (2025-12-26 22:51:53)
·Linux 常用命令最全 (2025-12-26 22:51:50)