`
streamsong
  • 浏览: 82502 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux系统下,搭建mysqlAB复制、双向复制

阅读更多

一、试验环境CentOS release 5.5 64bit mysql5.0.90

A:主服务器主机名www.caimincun.com ip192.168.1.203

B:从服务器主机名uc.caimincun.com ip192.168.1.215

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是MasterMySQL版本和Slave的版本相同或者MasterMySQL版本低于SlaveMySQL版本,Master的版本MySQL一定不能高于SlaveMySQL版本。

二、在主服务器和从服务器上为复制设置一个连接账户。该账户必须授予REPLICATION SLAVE权限和FILE权限。如果账户仅用于复制(推荐这样做),则不需要再授予任何其它权限。

/local/server/mysql/bin/mysql -u root -pzhcw123

mysql> GRANT REPLICATION SLAVE,FILE ON *.* TO slave@'192.168.1.%'IDENTIFIED BY '123456';(这样授权可能开启同步的时候Slave_IO_Running可能为no,如果是测试环境,建议用下面的方法

mysql>grant all PRIVILEGES on *.* to slave@'192.168.1.%' identified by '123456';

mysql和从mysql都要执行上面的语句

mysql> show databases;

+--------------------+

| Database                  |

+--------------------+

| information_schema |

| dbcenter                  |

| mysql                       |

| test                          |

| uchome                    |

| zhcw                        |

+--------------------+

mysql创建需要复制的数据库AB

mysql> create database AB;(为了实验方便,只建库不建表)

mysql> show databases;

+--------------------+

| Database                  |

+--------------------+

| information_schema |

| AB                          |

| dbcenter                  |

| mysql                       |

| test                          |

| uchome                    |

| zhcw                        |

+--------------------+

mysql> Flush privileges;

修改 主服务器上的my.cnf 文件

vi /etc/my.cnf

# Replication Master Server (default)

# binary logging is required for replication

下添加

注释掉#server-id = 1

log-bin=mysql-bin                       # 启动二进制日志系统

server-id=1                                 # 本机数据库ID 标示为主服务器

binlog-do-db=AB                       # 二进制需要同步的数据库名

binlog-ignore-db=mysql               # 避免同步mysql用户配置,以免不必要的麻烦如果多个数据库不需要同步,建议重复使用次参数,如binlog-ignore-db=mysql binlog-ignore-db=test,不建议binlog-ignore-db=mysql,test的方法

master-host = 192.168.1.215      # 指定主服务器IP地址

master-user = slave                      #指定在主服务器上可以进行同步的用户名

master-password = 123456         #密码

master-port = 3306                      #同步所用端口

master-connect-retry = 60            #断点从新连接时间

replicate-ignore-db = mysql           #屏蔽对mysql库的同步

replicate-do-db = AB                    #同步的数据库的名称

如果要同步的数据库有数据,需要执行FLUSH TABLES WITH READ LOCK语句清空内存中所有表和块写入磁盘并锁住表, 并将本地需要同步数据库打包拷贝到从数据库上

mysql> FLUSH TABLES WITH READ LOCK;

然后将要复制的数据库的信息拷贝到远程主机上

scp –r /local/data/mysql/AB 192.168.1.215:/data/mysql

// 对主服务器进行解锁

mysql> UNLOCK TABLES

// 关闭mysql服务

/local/server/mysql/bin/mysqladmin –u root –pzhcw123 shutdown

也可以用/etc/init.d/mysqld stop命令关闭mysql数据库

如果log-bin=/local/data/mysql路径下有日志,建议删除日志

rm –rf mysql-bin.*

启动mysql服务

/local/server/mysql/bin/mysqld_safe –user=mysql &

或者/etc/init.d/mysqld start

三、配置从服务器

创建同步的数据库AB

mysql> create database AB;(为了实验方便,只建库不建表)

mysql> show databases;

+--------------------+

| Database                 |

+--------------------+

| information_schema |

| AB                          |

| dbcenter                  |

| mysql                       |

| test                           |

| uchome                    |

| zhcw                        |

+--------------------+

mysql> Flush privileges;

[root@uc mysql]# vi /etc/my.cnf

修改 my.cnf 文件,在

# Replication Master Server (default)

# binary logging is required for replication

下添加

注释掉#server-id = 1

server-id=2                                  # 从服务器ID号,不要和主ID相同

master-host=192.168.1.203         # 指定主服务器IP地址

master-user=slave                        # 指定在主服务器上可以进行同步的用户名

master-password=123456            # 密码

master-port=3306                         # 同步所用端口

master-connect-retry=60               # 断点从新连接时间

replicate-ignore-db=mysql             # 屏蔽对mysql库的同步

replicate-do-db=AB                      # 同步的数据库的名称

binlog-do-db=AB                           # 二进制需要同步的数据库名

binlog-ignore-db=mysql                  # 避免同步mysql用户配置,以免不必要的麻烦如果多个数据库不需要同步,建议重复使用次参数,如binlog-ignore-db=mysql binlog-ignore-db=test,不建议binlog-ignore-db=mysql,test的方法

// 关闭mysql服务

/local/server/mysql/bin/mysqladmin –u root –pzhcw123 shutdown

或者/etc/init.d/mysqld stop

如果log-bin=/local/data/mysql路径下有日志,建议删除日志

rm –rf mysql-bin.*

启动mysql服务

/local/server/mysql/bin/mysqld_safe –user=mysql &

或者/etc/init.d/mysqld start

分别在两台mysql数据库查看master状态

/local/server/mysql/bin/mysql –u root –pzhcw123

mysql> show master status;

+--------------+----------+--------------+------------------+

| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+--------------+----------+--------------+------------------+

| mysql.000001 |       98 | AB           | mysql            |

+--------------+----------+--------------+------------------+

[root@uc mysql]# /local/server/mysql/bin/mysql -u root -pzhcw123

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 |       98 | AB           | mysql            |

+------------------+----------+--------------+------------------+ 

可以看到同步使用的日志和Pos地址等信息

// 启动从服务器线程:

在两台mysql数据库分别执行

mysql> START SLAVE;

验证配置  通常情况下,mysql双向复制已经配置成功,但是有时候也会有一些问题

两天mysql数据库分别执行

mysql> show slave status;

如果Slave_IO_Running: Yes

Slave_SQL_Running: Yes

证明同步成功,如果有一个状态为NO,则表示同步失败

通常解决方法为在从库停止同步

mysql> stop slave;

mysql> CHANGE MASTER TO MASTER_LOG_FILE=' mysql.000001 ',MASTER_LOG_

POS=98;

mysql> start slave;

mysql> show slave status;

具体的MASTER_LOG_FILE,MASTER_LOG_POS需要参考对应的主数据库show master status;查询出的信息。

如果Slave_IO_RunningSlave_SQL_Running仍然有状态为No的,请参考一下信息,找到原因并解决。

如果是slave_io_running no了,那么有三种情况,一个是网络有问题,连接不上,第二个是有可能my.cnf有问题,请仔细检查并修改配置文件,三是授权的问题,replication slavefile权限是必须的,很多情况下,出现Slave_IO_Running:NO的原因是slave上没有权限读master上的数据。一旦iono了先看err日志,看看是什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数。

如果是slave_sql_running no了,那么也有两种可能,一是slave机器上这个表中出现了其他的写操作,二是slave进程重启,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样。这种原因想恢复的话,只要停掉slaveset GLOBAL SQL_SLAVE_SKIP_COUNTER=1;再开一下slave就可以了,

mysql> stop slave;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> start slave;

四、测试

// 在主服务器上建立一个表

mysql> use AB;

mysql> create table test(id int,name varchar(20));

Query OK, 0 rows affected (0.20 sec)mysql> show tables;

+--------------+

| Tables_in_AB |

+--------------+

| test         |

mysql> insert into test values(1,'stream');

Query OK, 1 row affected (0.12 sec)

mysql> insert into test values(2,'super');

Query OK, 1 row affected (0.00 sec)

mysql> insert into test values(3,'merry');

Query OK, 1 row affected (0.01 sec)

mysql> select * from test;

+------+--------+

| id   | name   |

+------+--------+

|    1 | stream |

|    2 | super  |

|    3 | merry  |

+------+--------+

// 在从服务器上查询

mysql> use AB;

mysql> show tables;

+--------------+

| Tables_in_AB |

+--------------+

| test         |

+--------------+

mysql> select * from test;

+------+--------+

| id   | name   |

+------+--------+

|    1 | stream |

|    2 | super  |

|    3 | merry  |

+------+--------+

在从mysql上建一张表

mysql> create table test1 as select * from test;

mysql> select * from test1;

+------+--------+

| id   | name   |

+------+--------+

|    1 | stream |

|    2 | super  |

|    3 | merry  |

+------+--------+

在主mysql里查询

mysql> show tables;</s

分享到:
评论

相关推荐

    linux下搭建mysql集群

    适用于linux中级人员,熟练掌握linux下mysql双击热备服务器的搭建,很好用

    Docker搭建MySQL主从复制(docker-compose)

    docker_compose搭建mysql主从复制

    linux系统运维之mysql dba

    通过本篇文章的学习,我们可以了解到在Linux环境下MySQL的各个方面,包括但不限于安装配置、集群搭建、代理应用、复制机制以及性能优化等关键知识点。对于从事Linux系统运维的技术人员来说,熟练掌握这些内容是十分...

    Linux操作系统中如何安装MySQL数据库

    然后,我们需要将 MySQL 的配置文件复制到 /etc 目录下,并且覆盖系统默认的配置文件。 在安装 MySQL 之前,我们需要初始化 MySQL 的数据库文件,并且规定使用 mysql 用户来访问。然后,我们需要将 MySQL 的数据...

    linux下安装mysql服务器

    Linux 下安装 MySQL 服务器是指在 Linux 操作系统中安装和配置 MySQL 数据库服务器的过程。MySQL 是一种关系型数据库管理系统,广泛应用于 Web 应用程序中。 知识点: 1. 安装 MySQL 客户端和服务器端 在 Linux ...

    Linux MySQL集群环境搭建

    在Linux系统下,MySQL集群的搭建是一个复杂的过程,它需要oroughly了解MySQL集群的概念、架构和配置。在本文中,我们将详细介绍MySQL集群的概念、架构、环境配置、安装和配置MySQL集群版本、配置Management Server等...

    Linux下MySQL主从同步复制

    【Linux下MySQL主从同步复制】是MySQL数据库在分布式环境中实现数据备份和高可用性的一种常见策略。在Linux操作系统上,这一过程涉及到一系列步骤,包括安装MySQL服务、配置主从服务器、设置复制参数以及验证复制...

    linux系统:docker搭建mysql主从服务器!

    linux系统:docker搭建mysql主从服务器!

    linux系统下,mysql安装时,配置文件

    linux系统下,mysql安装时,配置文件linux系统下,mysql安装时,配置文件

    mysql 主从复制环境搭建

    在 Windows 环境下,搭建 MySQL 主从复制功能需要准备系统环境、安装 MySQL 服务、配置主从复制等步骤。 步骤一:准备系统环境 1. 准备一台 PC,安装 Windows XP 32 位操作系统。 2. 安装 MySQL 5.0。 步骤二...

    linux下mysql主从复制

    在本篇文章中,我们将详细介绍如何在 Linux 操作系统环境下搭建 MySQL 的单向主从复制与双向主从复制。通过这些步骤,您可以确保数据的高可用性和容灾能力。 #### 二、单向主从复制配置 ##### 1. 配置 Master 节点...

    Linux中mysql的搭建和应用

    以上就是在Linux环境下MySQL的搭建和基础操作步骤,这些操作对于日常的数据库管理和维护至关重要。在实际使用中,还需要了解更多的SQL语法和优化技巧,以确保数据的安全性和高效性。同时,熟悉错误处理和性能监控也...

    Linux系统下搭建Bugzilla.docx

    在Linux系统下搭建Bugzilla是一项常见的任务,特别是对于软件测试人员和开发团队而言,Bugzilla是一个强大的开源错误跟踪系统,用于管理和追踪软件开发过程中的缺陷。以下是对搭建过程的详细说明: 首先,确保你的...

    mysqlab复制.txt

    MySQL AB复制是一种常见的数据库复制模式,旨在通过在多个服务器之间复制数据来提高数据冗余度、增强系统的可靠性和可用性。这种复制模式不仅能够提供数据备份,还能在一定程度上分担主服务器(Master)的压力,提高...

    mysql双向复制技术

    双向复制技术,mysql的主从技术的高级应用,mysql55以上版本

    linux下mysql主从复制搭建.pdf

    在Linux环境下,MySQL主从...通过以上步骤,您可以在Linux环境下成功地搭建起MySQL的主从复制环境,从而实现数据的实时同步和高可用性。在实际应用中,可能还需要考虑网络安全性、性能优化、故障切换策略等高级话题。

    MySQL主从复制搭建 需要用到的脚本

    这里提到的“MySQL主从复制搭建 需要用到的脚本”包含了搭建过程中的一些关键配置文件和自动化管理脚本。 1. `app1.cnf`:这是一个配置文件,通常包含MySQL服务器的特定设置,例如服务器ID、连接信息(如主机名、...

    Linux操作系统下yum搭建mysql服务器.pdf

    "Linux操作系统下yum搭建mysql服务器.pdf" 在本文中,我们将详细介绍如何在 Linux 操作系统下使用 yum 搭建 MySQL 服务器。 首先,让我们了解 MySQL 的基本概念。MySQL 是一个小型关系型数据库管理系统,被广泛地...

    linux下MySQL-cluster集群搭建.

    ### Linux 下 MySQL Cluster 集群搭建详解 #### 一、基本概念 MySQL Cluster 是一个高性能、高可用性且易于管理的解决方案,适用于需要实时事务处理的应用场景。它基于 NDB 存储引擎,该存储引擎是事务型的并且...

Global site tag (gtag.js) - Google Analytics