mysql主从复制配置篇

操作系统环境:CentOS release 6.5 (Final)

MySQL数据库 :mysql  Ver 14.14 Distrib 5.5.45

master 192.168.10.180

slave  192.168.10.80

主从服务器的hosts均添加了ip主机名对应关系

大体的步骤有以下几步

1.服务器角色指定

2.mysql数据库安装配置

3.主库上的配置

3.1 设置server-id并开启binlog

3.2 创建用户用于同步,测试是否可以连接

3.3 对数据库锁表只读

3.4 查看主库状态

3.5 master全备

3.6 传输备份到slave

4.从库上的配置

4.1 设置server-id

4.2 还原来自master的全备

4.3 配置同步参数

4.4 测试

步骤2参考之前的安装配置,本次均是在cmake编译安装的基础上进行操作的

均打开开机启动

[[email protected] ~]# chkconfig --list mysqld
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

[[email protected] ~]# chkconfig --list mysqld
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

3.1修改参数文件

[[email protected] ~]# vi /etc/my.cnf 
server-id = 1
log-bin = /app/mysql-5.5.45/data/mysql-bin

[[email protected] ~]# grep -E "server-id|log-bin" /etc/my.cnf 
log-bin = /app/mysql-5.5.45/data/mysql-bin
server-id	= 1
#log-bin=mysql-bin
[[email protected] ~]# service mysqld restart
Shutting down MySQL. SUCCESS! 
Starting MySQL.. SUCCESS!

注意配置在mysqld模块下重启数据库

3.2创建用户,测试

[[email protected] ~]# mysql -uroot -prootroot

mysql> grant replication slave on *.* to ‘slave_rep‘@‘192.168.10.80‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)

replication slave是必须的权限,*.*表示所有的表,也可以指定具体的某个库
slave_rep‘@‘192.168.10.80‘为用户名和指定的ip

从库测试:
[[email protected] ~]# mysql -uslave_rep -p123456 -h 192.168.10.180

3.3 对数据库锁表只读

mysql> show master status ;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |     1135 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> show master logs ;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |      1135 |
+------------------+-----------+
1 row in set (0.00 sec)

mysql> flush table with read lock ;
Query OK, 0 rows affected (0.01 sec)

注意5.1和5.5锁表有不同  tables和table

开启新终端进行全备

[[email protected] ~]# mysqldump -uroot -prootroot  -A -B --events --master-data=2|gzip > /tmp/mysql_rep.sql.gz

主库解锁

mysql>  unlock tables; 
Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]# scp /tmp/mysql_rep.sql.gz 192.168.10.80:/tmp

从库配置

4.1 设置server-id

[[email protected] ~]# vi /etc/my.cnf 
[[email protected] ~]# grep -E "server-id" /etc/my.cnf 
server-id	= 3
[[email protected] ~]# service mysqld restart
Shutting down MySQL. SUCCESS! 
Starting MySQL.. SUCCESS! 
[[email protected] ~]# 
[[email protected] ~]# mysql -uroot -prootroot -e "show variables like ‘%server_id%‘;"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3     |
+---------------+-------+

4.2 还原来自master的全备

[[email protected] ~]# gunzip /tmp/mysql_rep.sql.gz 
[[email protected] ~]# mysql -uroot -prootroot < /tmp/mysql_rep.sql

4.3 配置同步参数

mysql> change master to
    -> master_host=‘192.168.10.180‘,
    -> master_port=3306,
    -> master_user=‘slave_rep‘,
    -> master_password=‘123456‘,
    -> master_log_file=‘mysql-bin.000001‘,
    -> master_log_pos=1135;
Query OK, 0 rows affected (0.07 sec)

以上操作产生的信息存放在数据目录下的/app/mysql-5.5.45/data/master_info中,从主库接收后更新这个文件

4.4 启动slave

mysql> start slave ;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G ;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.180
                  Master_User: slave_rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 1135
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1135
              Relay_Log_Space: 409
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

ERROR: 
No query specified

从库的中继日志信息
[[email protected] data]# cat relay-log.info 
./slave-relay-bin.000002
253
mysql-bin.000001
1135

4.5 测试

主库创建数据库,建表,插入数据,从库查看同步信息

[[email protected] ~]# mysql -uroot -prootroot
mysql> create database rep1 ;
Query OK, 1 row affected (0.00 sec)
mysql> use rep1 ;
Database changed
mysql> create table test (num int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test values(1);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test values(2);
Query OK, 1 row affected (0.00 sec)

从库查看

[[email protected] ~]# mysql -uroot -prootroot 
mysql> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| rep1               |
| test_rep           |
+--------------------+
5 rows in set (0.00 sec

mysql> select * from rep1.test ;
+------+
| num  |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

查看中继日志信息
[[email protected] data]# cat relay-log.info 
./slave-relay-bin.000002
794
mysql-bin.000001
1676
[[email protected] data]#

[[email protected] data]# mysqlbinlog slave-relay-bin.000002

从库信息
mysql> show processlist\G ;
*************************** 1. row ***************************
     Id: 17
   User: system user
   Host: 
     db: NULL
Command: Connect
   Time: 831
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 18
   User: system user
   Host: 
     db: NULL
Command: Connect
   Time: 373
  State: Slave has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
*************************** 3. row ***************************
     Id: 19
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
3 rows in set (0.00 sec)

ERROR: 
No query specified

主库信息
mysql> show processlist\G ;
*************************** 1. row ***************************
     Id: 8
   User: slave_rep
   Host: slave:53940
     db: NULL
Command: Binlog Dump
   Time: 867
  State: Master has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 2. row ***************************
     Id: 9
   User: root
   Host: localhost
     db: rep1
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
2 rows in set (0.00 sec)

ERROR: 
No query specified
时间: 2024-12-08 09:19:41

mysql主从复制配置篇的相关文章

linux下mysql主从复制(第二篇读写分离) mycat 中间件

linux下mysql主从复制(第二篇读写分离) mycat 中间件 接着上篇文档补全,mysql 读写分离,在上篇文章案例下准备好Mycat-server-1.4-release-20151019230038-win.tar.gz 解压包 1.解压后的文件如下: 1.1 接下来进入到conf 目录下配置四个文件server.xml.schema.xml.rule.xml.log4j.xml 下面一一介绍 1.2 首先在我们主服务上面test 库下新建两张表如下: CREATETABLE`t_u

一.Mysql主从复制配置

在我之前的文章四·安装mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz(基于Centos7源码安装 和 九.mysql数据库多实例安装mysqld_multi [start,stop,report] 两篇文章写到了单太服务器多实例的安装,本篇文章是关于主从复制的配置.本次把mysql3306作为主Master,mysql3307和mysql3308作为Slave 一.启动3台mysql服务器 [[email protected] ~]$ mysqld_multi

mysql 主从复制配置

主从复制配置 步骤如下: 主服务器:从服务器ip地址分别为 [python] view plain copy 192.168.145.222.192.168.145.226 1.修改主服务器master: [python] view plain copy vi /etc/my.cnf [mysqld] log-bin=mysql-bin   #[必须]启用二进制日志 server-id=222      #[必须]服务器唯一ID,默认是1,一般取IP最后一段 2.修改从服务器slave: [py

mysql主从复制配置操作以及主从宕机切换演练

主从复制目的: 主从服务器设置的稳健性得以提升,如果主服务器发生故障,可以把本来作为备份的从服务器提升为新的主服务器.在主从服务器上分开处理用户的请求,读的话,可以直接读取备机数据,可获得更短的响应时间. 主服务器:IP地址192.168.80.129,mysql已经安装,无用户数据. 从服务器:IP地址192.168.80.130,mysql已经安装. 注:数据库版本必须一致. 1.主从复制配置 修改从服务器的配置文件/etc/my.cnf,在mysqld里添加一下属性 [mysqld] lo

linux mysql主从复制配置

1.设置主库master的servie-id值并且开启bin-log功能参数vi /etc/my.cnf修改my.cnf的参数:[mysqld]server-id=1 //每一个库的server-id必须都不一样log-bin=mysql-bin 2.检查参数是否成功设置并重新启动egrep "server-id|log-bin" /etc/my.cnf重启命令见:mysql安装或mysql数据库多实例 3.登录数据库检查参数的更改情况show variables like 'serv

mysql主从复制配置(精简版)

一.首先准备两台服务器,虚拟机即可,以笔者为例:master:192.168.1.105 slave:192.168.1.106 二.保证两台虚拟机能相互ping通,先把防火墙关闭:service iptables stop 三.安装mysql,可参考笔者linux 快速安装mysql 四.配置主从 编辑/etc/my.cnf文件 (1)配置master 添加如下配置: server-id = 1      #Server标识log-bin            #打开 MySQL 的 Bina

mysql主从复制配置

早就想写一篇关于数据库主从复制的文章,今天利用一些琐碎的时间操作了一遍并记录下来: 首先,我们必须思考,主从复制的大概步骤是什么,即使你不懂数据库这块,我想这个步骤好好想下还是知道的,我们知道数据库是跟用户关联的,那么首先必须建立一个用户,然后授权,这个用户在哪里建立呢?数据来源是主库,当然是在主库里面建立用户了,是的,然后需要利用数据库提供的命令在从库里面对在主库建立的用户一个授权操作,然后就OK了,大概步骤如下: 对于主库 编辑/etc/my.cnf,添加以下内容 vi /etc/my.cn

mysql 主从复制配置详解

主从复制模型配置过程: 备注: 主节点IP地址是192.168.1.106   从节点的ip地址是192.168.1.107: 主节点: (1)启动二进制日志: 1-1 编辑配置文件 vim /etc/my.cnf配置如下所示: [mysqld] log-bin=master-bin server-id=1 innodb-file-per-table=ON skip_name_resolve=ON systemctl start mariadb.service  1-2 进入mysql使用 my

Mysql系列(三)—— Mysql主从复制配置

一.前言 主从复制是Mysql知识体系中非常重的要一个模块.学习主从复制和后续的读写分离是完善只是知识体系的重要环节.且主从复制读写分离的思想并不仅仅局限于Mysql,在很多存储系统中都有该方案,如:redis. 从应用的角度思考,主从复制有如下优点: 可以备份数据,容灾 可以做读写分离,分担单机Mysql节点的压力.master只做write,slave做read 数据归类进行分析计算很耗性能时,可以只在slave节点上进行 一定程度保证可用性,master write节点发生宕机,可以快速切