Mysql基于binlog主从复制配置

上次配置mysql的主从复制还是年初的时候,没想到现在又开始使用mysql了。话不多说,进入正题

Master-Slave 搭建环境:
Master:
Os: rhel-server-6.3-x86_64
Mysql: MySQL -5.5.35-1
虚拟机:Virtual BOX
Ip:192.168.56.12

Slave:
Os: rhel-server-6.3-x86_64
Mysql: MySQL -5.5.35-1
虚拟机:Virtual BOX
Ip:192.168.56.13

总体步骤:

1、 修改Master配置文件(my.cnf)

2、 在Master上创建一个有复制权限的用户

3、 复制Master上的数据库到Slave

4、 修改Slave配置文件(my.cnf)

5、 Slave初始化复制

6、 测试

7、 常见问题

1、 修改Master配置文件(my.cnf)

[mysqld]
server-id=1  //必须是服务器唯一id,默认是0,
log-bin=mysql-bin //必须启用二进制日志
replicate-do-db=zbdba

2、 在Master上创建一个有复制权限的用户

mysql>create user zbdba;
mysql>grant replication slave on *.* to zbdba identified by '123456';

3、 复制Master上的数据库到Slave

mysql>flush tables with read lock;
mysql> show master status
    -> ;
+-----------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| ogg1-bin.000003 |      107 |              |                  |
+-----------------+----------+--------------+------------------+1 row in set (0.00 sec)
mysql>quit
[[email protected] /]# /usr/bin/mysqldump zbdba -uroot -pmysql --opt | mysql zbdba -uroot -pmysql -h 192.168.56.13
需要在slave中授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.56.13' IDENTIFIED BY 'mysql' WITH GRANT OPTION;

mysql>unlock tables;

4、 修改Slave配置文件(my.cnf)

[mysqld]
server-id=2  //必须是服务器唯一id,默认是0,
log-bin=mysql-bin //必须启用二进制日志
replicate-do-db=zbdba

5、 Slave初始化复制

mysql>slave stop;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.56.12',
MASTER_USER='zbdba',MASTER_PASSWORD='123456',MASTER_LOG_FILE='ogg1-bin.000003',MASTER_LOG_POS=107;
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.56.12
                  Master_User: zbdba
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: ogg1-bin.000003
          Read_Master_Log_Pos: 107
               Relay_Log_File: ogg2-relay-bin.000002
                Relay_Log_Pos: 252
        Relay_Master_Log_File: ogg1-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: zbdba

6、 测试

master:

mysql> show tables;
+-----------------+
| Tables_in_zbdba |
+-----------------+
| guestbook       |
| test            |
| test1           |
+-----------------+
create table test2 select * from test1;
mysql> show tables;
+-----------------+
| Tables_in_zbdba |
+-----------------+
| guestbook       |
| test            |
| test1           |
| test2           |
+-----------------+

salve:

mysql> show tables;
+-----------------+
| Tables_in_zbdba |
+-----------------+
| guestbook       |
| test            |
| test1           |
| test2           |
+-----------------+
4 rows in set (0.00 sec)

如果需要配置相互主从的关系,只需要在slave数据库上面建立对应用户,原master上面做一下初始化就行了。

7、 常见问题

/etc下面没有对应的my.cnf文件

解决方法:

如果mysql使用rpm包安装的,/etc下没有对应的my.cnf文件,这时候只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。

Server-id参数无法修改

解决方法:

看my.cnf中是否存在相同的server-id=1

MYSQL主备出现这个错误: ERROR 1201 (HY000):

解决方法:

mysql> slave stop;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> reset slave;

Query OK, 0 rows affected,(0.00 sec)

ERROR 1130 (HY000): Host ‘*.*.*.*‘ is not allowed to connect to this MySQL server

解决方法:

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘192.168.1.3‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;

时间: 2024-11-15 14:35:10

Mysql基于binlog主从复制配置的相关文章

mysql 5.5主从复制配置

首先将主库现有的要实现主从的数据库原原本本地复制到从库上,目的是一开始就让主从同步,让binlog日志从最新的记录开始同步! 备份: 1 导出所有库 系统命令行 mysqldump -uusername -ppassword --all-databases > all.sql 2 导入所有库 mysql命令行 mysql>source all.sql; 远程复制:将192.168.80.145上的test.sql拷到本机上 scp 192.168.80.145:/tmp/test.sql /t

MySQL 5.6 主从复制配置

一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. 二.MySQL主从复制(读写分离)和集群的区别: 1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作).局限性:(1)配置好主从复制之后,

mysql基于ssl 主从复制

#注意:主从服务器数据库版本须一致:主从服务器时间须同步 环境: centos6.6_x86_64 mysql5.1 master_ip:192.168.122.20 slave_ip:192.168.122.207 主服务器配置 [[email protected] mysql]# mkdir /mydata/binlogs [[email protected] mysql]# chown -R mysql.mysql /mydata [[email protected] mysql]# vi

配置MYSQL基于GTID 主从复制详细解析及步骤

GTID的概念 全局事务标识:global transaction identifiers GTID是一个事务一一对应,并且全局唯一ID GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或主从不一致 GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制.而是使用MASTER_AUTO_POSTION=1的方式开始复制. MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善. 在传统的slave端,binlog是不用开

关系型数据库之MySQL基于SSL主从复制及SSL远程访问

当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密. 准备环境: 1.系统环境:Centos6.52.数据库版本:5.5.36-MariaDB-log MariaDB Server3.Host:Master主机: master.samlee.com 172.16.100.7Slave主机: slave.samlee.com 172.16.100.8Public主机: public.samlee.com 172

mysql基于binlog回滚工具_flashback(python版本)

    update.delete的条件写错甚至没有写,导致数据操作错误,需要恢复被误操作的行记录.这种情形,其实时有发生,可以选择用备份文件+binlog来恢复到测试环境,然后再做数据修复,但是这样其实需要耗费一定的时间跟资源. 其实,如果binlog format为row,binlog文件中是会详细记录每一个事务涉及到操作,并把每一个事务影响到行记录均存储起来,能否给予binlog 文件来反解析数据库的行记录变动情况呢? 业界已有不少相关的脚本及工具,但是随着MySQL版本的更新.binlo

mysql基于amoeba配置读写分离

                     Mysql高级集群-读写分离Amoeba                          mysql在配置好主从复制之后,已经达到双机热备和容灾的效果.此博客是建立在主从复制的前提上 ,mysql基于amoeba的配置读写分离在我看来:就是为了达到数据库高可用性,安全性以及高并发,达到 负载均衡的效果.说简单点,我个人觉得意思就是让主服务器轻松点,不易挂掉.还有就是充分利用从服务器.  本人水平有限,望各位大神多多指点指点.我非常乐意听取意见. 此版本

MySQL 5.7 基于 binlog 的主从复制

MySQL 5.7 基于 binlog 的主从复制 Hostname 内网 IP mysql-master1 172.40.1.117 mysql-slave1 172.40.3.44 mysql-master2 172.40.0.149 mysql-slave2 172.40.5.110 编译安装 MySQL 安装依赖包 yum install -y gcc gcc-c++ cmake ncurses ncurses-devel bison 下载含有 boost 的源码包 wget https

MySQL基于SSL协议的主从复制

数据对于大部分公司来说都是最重要的部分,而MySQL的服务器在同步数据时,默认是使用明文进行传输,所以接下来就来说说MySQL基于SSL协议进行密文传输数据的主从复制模式. 逻辑拓扑: 接下来的实验中Master节点服务器即使Master节点数据库服务器,同时也是CA. 环境准备: 一.主从服务器时间需要同步: [[email protected] ~]# chronyc sources 210 Number of sources = 1 MS Name/IP address         S