mysql主从配置

mysql的主从配置


1、主从简介


在现代企业中,数据库显得尤为重要,而储存数据的数据库选择的五花八门,但任何数据库都存在着一种隐患。

想几个问题:

  • 用一台服务器存放数据,若此数据库服务器出问题导致数据库丢失怎么办?
  • 业务量大了,数据多了,访问人多了,一台数据库无法保证服务器质量怎么办?

1.1、主从作用

  • 实时灾备,用于故障切换
  • 读写分离,提供查询服务
  • 备份,避免影响业务

1.2、主从形式

  • 一主多从
  • 主主复制
  • 一主多从
  • 多主一从
  • 联级复制

2、主从复制原理

主从复制步骤:

  • 主库将所有的写操作记录到binlog日志中并且生成一个log dumo线程,将binlog日志传给从数据库的I/O线程
  • 从数据库生成两个线程,一个SQL线程,一个I/O线程
    • I/O线程去请求主库的binlog,并且将得到的binlog日志写道reay log(中继日志)文件中
    • SQL线程会读取relay log文件日志中,并且解析具体操作,来实现组从一致。

3、主从复制配置

配置步骤:

  • 确保主从数据库数据一样
  • 在主数据库里面创建一个同步账号授权给从库
  • 配置主数据库(配置文件)
  • 配置从数据库(配置文件)

准备两台数据库:

数据库角色 IP 应用系统版本 有无数据
主数据库 192.168.7.10 radhat7
从数据库 192.168.7.11 radhat7

数据库安装步骤省略。。。。。

3.1、主从一致

主服务器

# mysqldump -uroot -p123 --all-databases > all.sql
# scp all.sql root@192.168.7.11

从服务器

# ls
all.sql
# mysql -uroot -p123 < all.sql

3.2、主数据库创建同步账号

mysql> CREATE USER 'repl'@'192.168.7.11' IDENTIFIED BY 'repl123'
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.7.11';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.7.11';

3.3、修改主数据库配置文件

# vim /etc/my.cnf
[mysqld]
                 basedir = /usr/local/mysql
                 datadir = /opt/data
                 socket = /tmp/mysql.sock
                 port = 3306
                 pid-file = /opt/data/mysql.pid
                 user = mysql
                symbolic-links=0
                log-error=/var/log/mysqld.log
                server-id=1
                log-bin=mysql-bin
                skip-name-resolve
# service mysqld restart
# mysql -uroot -p123
mysql> show master status;		//数据库状态
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> 

3.4、配置从数据库

# vim /etc/my.cnf 
 [mysqld] 
                 basedir = /usr/local/mysql 
                 datadir = /opt/data 
                 socket = /tmp/mysql.sock 
                 port = 3306 
                 pid-file = /opt/data/mysql.pid 
                 user = mysql 
		server-id=2 
		relay-log=mysql-relay-bin 
		symbolic-links=0
		log-error=/var/log/mysqld.log 
                skip-name-resolve               
               
# service mysqld restart
# mysqld -uroot -p123
//配置启动从数据库
mysql> CHANGE MASTER TO 
    -> MASTER_HOST='192.168.7.11';
     -> MASTER_USER='repl', 
    -> MASTER_PASSWORD='repl123',    
    -> MASTER_LOG_FILE='mysql-bin.000002',    
    -> MASTER_LOG_POS=154; 
 mysql> start slave; 
 mysql> show slave status \G 
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.7.11
                  Master_User: lzj
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 154
               Relay_Log_File: mysql-relay-bin.000008
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

效果:

主mysql

从mysql

posted @ 2020-06-20 23:02  -东皇太一-  阅读(204)  评论(0编辑  收藏  举报