mysql主从介绍,准备工作,主配置,从配置,主从测试

主从介绍

  • MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。
  • MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
  • 主从过程三个步骤
    • 主将更改操作记录到binlog中
    • 从将主的binlog事件(SQL语句)同步到本机并记录在relaylog中
    • 从根据relaylog里面的SQL语句按顺序执行
  • 该过程有三个线程,主上有一个logdump线程,用来和从的i/o线程传递binlog;从上有两个线程,其中i/o线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的SQL语句落地。
  • 应用环境:备份数据和分担主库数据读取压力

    准备工作

  • 准备两台机器,分别安装好mysql并启动服务,akuilinux01为主,02为从。

    配置主服务器

  • 编辑配置文件,增加两行,并重启服务
    [[email protected] src]# vim /etc/my.cnf
    server-id=130
    #自定义
    log_bin=linux1
    #指定binlog前缀
    [[email protected] src]# /etc/init.d/mysqld restart
    Shutting down MySQL... SUCCESS!
    Starting MySQL... SUCCESS! 
  • 把mysql库备份并恢复成aming库,作为测试数据
    查看库,带akuilinux01的是新生成的。
    [[email protected] src]# ll /data/mysql/
    总用量 110688
    -rw-rw---- 1 mysql mysql      120 6月  29 09:32 akuilinux01.000001
    -rw-rw---- 1 mysql mysql    71795 6月  29 09:32 akuilinux01.err
    -rw-rw---- 1 mysql mysql       21 6月  29 09:32 akuilinux01.index
    -rw-rw---- 1 mysql mysql        5 6月  29 09:32 akuilinux01.pid
    -rw-rw---- 1 mysql mysql       56 5月  23 15:38 auto.cnf
    -rw-rw---- 1 mysql mysql 12582912 6月  29 09:32 ibdata1
    -rw-rw---- 1 mysql mysql 50331648 6月  29 09:32 ib_logfile0
    -rw-rw---- 1 mysql mysql 50331648 5月  23 15:32 ib_logfile1
    drwx------ 2 mysql mysql     4096 5月  23 15:32 mysql
    drwx------ 2 mysql mysql     4096 5月  23 15:32 performance_schema
    drwx------ 2 mysql mysql        6 5月  23 15:27 test
    drwx------ 2 mysql mysql      324 6月  27 22:52 zrlog
    备份库
    [[email protected] src]# cd /data/mysql/
    [[email protected] mysql]# mysqldump -uroot -ps5381561 mysql > /tmp/mysql.sql
    Warning: Using a password on the command line interface can be insecure.
    新建库
    [[email protected] mysql]# mysql -uroot -ps5381561 -e "create database akui"
    备份恢复到新建库
    [[email protected] mysql]# mysql -uroot -ps5381561 akui < /tmp/mysql.sql
  • 创建一个用户用作同步数据
    mysql> grant replication slave on *.* to ‘repl‘@192.168.21.129 identified by ‘password‘;
    Query OK, 0 rows affected (0.00 sec)
    #ip为从机器的ip
    mysql> flush tables with read lock;
    Query OK, 0 rows affected (0.09 sec)
    #锁定数据表(目的是暂时使其不能继续写,保持现有状态用于同步)
    mysql> show master status;
    +--------------------+----------+--------------+------------------+-------------------+
    | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +--------------------+----------+--------------+------------------+-------------------+
    | akuilinux01.000001 |   660260 |              |                  |                   |
    +--------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    #记住file和position(设置主从同步时会使用)
    mysql> quit
    Bye
  • 备份主中的所有数据库,mysql中包含用户和密码的信息可以不用备份
    [email protected] ~]# cd /data/mysql/
    [[email protected] mysql]# ls
    akui                akuilinux01.index  ibdata1      mysql               zrlog
    akuilinux01.000001  akuilinux01.pid    ib_logfile0  performance_schema
    akuilinux01.err     auto.cnf           ib_logfile1  test
    [[email protected] mysql]# mysqldump -uroot -ps5381561 zrlog > /tmp/zrlog.sql
    Warning: Using a password on the command line interface can be insecure.
    [[email protected] mysql]# mysqldump -uroot -ps5381561 akui > /tmp/akui.sql
    Warning: Using a password on the command line interface can be insecure.

    配置从服务器

  • 安装mysql并启动
  • 查看my.cnf,配置server-id=131,要求和主不一样,并重启服务
    [[email protected] mysql]# vim /etc/my.cnf
    server-id=131
    [[email protected] mysql]# /etc/init.d/mysqld restart
    Shutting down MySQL.. SUCCESS!
    Starting MySQL. SUCCESS! 
  • 同步主的备份数据到从上
    [[email protected] mysql]# scp 192.168.21.128:/tmp/*.sql /tmp/
    akui.sql                                                                            100%  644KB  15.6MB/s   00:00
    mysql.sql                                                                           100%  644KB  26.1MB/s   00:00
    zrlog.sql                                                                           100% 9869     1.7MB/s   00:00    
  • 创建从上的库
    [[email protected] mysql]# alias ‘mysql=/usr/local/mysql/bin/mysql‘
    [[email protected] mysql]# alias ‘mysqldump=/usr/local/mysql/bin/mysqldump‘
    [[email protected] mysql]# mysql -uroot
    mysql> create database akui
    -> ;
    Query OK, 1 row affected (0.00 sec)
    mysql> create database zrlog;
    Query OK, 1 row affected (0.00 sec)
    mysql> quit
    Bye
  • 恢复库
    [[email protected] mysql]# mysql -uroot akui < /tmp/akui.sql
    [[email protected] mysql]# mysql -uroot zrlog < /tmp/zrlog.sql
    保证和主上的一致
  • 主从同步
    [[email protected] mysql]# mysql -uroot
    mysql> stop slave;
    Query OK, 0 rows affected (0.01 sec)
    mysql> change master to master_host=‘192.168.21.128‘,master_user=‘repl‘,master_password=‘password‘,master_log_file=‘akuilinux01.000001‘,master_log_pos=660260;
    #IP为主的IP;file、pos分别为主的filename和position。
    Query OK, 0 rows affected, 2 warnings (0.02 sec)
    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)
  • 从上检测是否同步成功
    mysql> show slave status\G
    Relay_Master_Log_File: akuilinux01.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
            Seconds_Behind_Master: 0  //为主从延迟的时间
            Last_IO_Errno: 0
            Last_IO_Error:
            Last_SQL_Errno: 0
            Last_SQL_Error:
  • 还要解锁主库的表
    [[email protected] mysql]# mysql -urelp -ppassword
    mysql> unlock tables;
    Query OK, 0 rows affected (0.00 sec)

    几个重要的参数

  • 主服务器上/etc/my.cnf
    • binlog-do-db= //仅同步指定的库
    • binlog-ignore-db= //忽略指定库
  • 从服务器上/etc/my.cnf
    • replicate_do_db=
    • replicate_ignore_db= #这两个尽量不要用
    • replicate_do_table=
    • replicate_ignore_table= #这两个尽量不要用
    • replicate_wild_do_table= //如aming.%, 支持通配符%,代表aming这个库
    • replicate_wild_ignore_table= #尽量使用这两个,使匹配更精确

      主从测试

  • 主上
    mysql> use akui;
    Database changed
    mysql> show tables;
    +---------------------------+
    | Tables_in_akui            |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | event                     |
    | func                      |
    | general_log               |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | innodb_index_stats        |
    | innodb_table_stats        |
    | ndb_binlog_index          |
    | plugin                    |
    | proc                      |
    | procs_priv                |
    | proxies_priv              |
    | servers                   |
    | slave_master_info         |
    | slave_relay_log_info      |
    | slave_worker_info         |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    28 rows in set (0.00 sec)
    删除akui库
    mysql> drop database akui;
    Query OK, 28 rows affected (0.04 sec)
  • 从上
    删除之前
    mysql> use akui;
    Database changed
    mysql> show tables;
    +---------------------------+
    | Tables_in_akui            |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | event                     |
    | func                      |
    | general_log               |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | innodb_index_stats        |
    | innodb_table_stats        |
    | ndb_binlog_index          |
    | plugin                    |
    | proc                      |
    | procs_priv                |
    | proxies_priv              |
    | servers                   |
    | slave_master_info         |
    | slave_relay_log_info      |
    | slave_worker_info         |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    28 rows in set (0.00 sec)
    删除之后
    mysql> show tables;
    ERROR 1049 (42000): Unknown database ‘akui‘

    问题

  • mysql主从介绍,准备工作,主配置,从配置,主从测试

    原文地址:http://blog.51cto.com/akui2521/2134129

    时间: 2024-11-05 16:11:16

mysql主从介绍,准备工作,主配置,从配置,主从测试的相关文章

mysql的介绍;安装及基本配置;mysql数据库运行必备技能

一.MySQL的介绍 1. 数据库:数据库集中存放位置 1) 常见的数据库类型:关系型(mysql.oracle.SQLserver2008,DB2),树型(windows注册表).非关系型(NoSQL). 2) 关系型数据库对象:数据记录-存->表à存à数据库:表分为数据库,关系表 2. MySQL是开源的关系型数据软件,目前由oracle公司维护,特点是:多线程.多用户.基于C/S架构(客户端/服务器),简单易用.查询速度快,安全可靠. 二.安装及基本配置: 1. 安装 1) 安装依赖ncu

17.1 MySQL主从介绍;17.2 准备工作;17.3 配置主;17.4 配置从;17.5 测试主从同步

17.1 MySQL主从介绍 1. MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 2. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 3. 主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 3)从根据relaylog里面的sql语句按顺序执行 4. 主上有一个log dum

17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步

- 17.1 MySQL主从介绍 - 17.2 准备工作 - 17.3 配置主 - 17.4 配置从 - 17.5 测试主从同步 # 17.1 MySQL主从介绍 -  MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 -  MySQL主从是基于binlog的,主上须开启binlog才能进行主从.bilog,是二进制文件,无法cat -  主从过程大致有3个步骤 1. 主将更改操作记录到binlog

MySQL主从介绍、准备工作、配置主、配置从、测试主从同步

MySQL主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步.MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 主从过程: 需要保持数据的一致性,才能复制数据 1.主服务器将更改操作记录到binlog中 2.从服务器将主服务器的binlog事件(SQL语句)同步到本机(从服务器)并记录在relaylog(中继日志)中 3.从服务器根据relaylog里面的SQL语句按顺

17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试

17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步 原文地址:http://blog.51cto.com/13227377/2141755

MySQL主从介绍、准备工作、准备工作、配置从、测试主从同步

17.1 MySQL主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步: MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 主从过程大致有3个步骤 主将更改操作记录到binlog里 从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 从根据relaylog里面的sql语句按顺序执行 主上有一个log dump线程,用来和从的I/O线程传递bi

MySQL主从配置:主从介绍、配置主和从 、测试主从同步

MySQL主从介绍 (两台机器数据同步) 主:-->binlog 从:-->relaylog 主上有一个log dump线程,用来和从的I/O线程传递binlog 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地(执行) 主从的应用场景: (1)做数据的备份,(主:作读写数据,从:实时同步,当 主 宕机时,从 也可以即使提供服务 ) (2)也是做备份.(客户从 从 这台机器上读取数据(但是不能再从上写),

mysql主从介绍、 配置主、配置从

mysql主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 3)从根据relaylog里面的sql语句按顺序执行 主上有一个log dump线程,用来和从的I/O线程传递b

MySQL的主从介绍、配置主、配置从、测试主从同步

MySQL的主从介绍 配置主 配置从 测试主从同步 主从配置的常见故障 1.网络原因:查看网络是否正常,SELinux是否关闭,iptables是否关闭2.账号密码不对:粗心大意,用户名与密码输错3.POS值不对:show maste status:4.克隆机器以及复制mysql都会出现UUID的问题,更改UUID即可 原文地址:http://blog.51cto.com/13515599/2095025