zoukankan      html  css  js  c++  java
  • linux下的mysql数据库以及mysql主从复制

    参考博客

    1.mysql数据库的安装

    centos7如何安装mysql
        1.yum安装
            1.1首先配置yum源,然后再用yum进行安装
        2. 源代码编译安装
        3.rpm包安装
        
    yum安装的前提条件,是准备好yum源,可以选择163源,清华源,阿里云源,等等等
    
    1.安装mariadb的yum源有俩
    一个是阿里云的yum源,可能版本较低,并且软件包很小,功能很少
    二个是mariadb官方的yum源 
    
    yum源的配置方式是什么?就是如何定制yum源?
    方法:在/etc/yum.repos.d目录下,建立一个repo文件就是yum仓库
    创建一个 mariadb.repo文件,写入如下内容
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    
    
    配置好yum源后进行安装
    yum install mariadb-server mariadb -y 
    
    2.安装mariadb,查看官方的版本号,和软件包信息,启动数据库
    
    systemctl start mariadb  #启动mariadb数据库
    
    3.在启动好mysql之后,进行初始化
    mysql_secure_installation        

    2.mysql数据库编码的设置

    1.查看数据库编码  /s

    2.进行mysql数据库编码统一,修改/etc/my.cnf配置如下 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci log-error=/var/log/mysqld.log datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [client] default-character-set=utf8 [mysql] default-character-set=utf8

    3.数据库授权进行远程登录

    授权mysql进行远程登录
    
    1.#授予   所有权限      在    所有的库下的所有的表   对   root 用户  以及所有的主机,设置远程登录的密码  111111
    grant all privileges   on *.*   to   root@"%"  identified by "111111";
    
    2.#立即刷新权限表
    flush privileges;

    4.mysql主从复制(面试)

    主从复制技术,保证了,数据库的读写分离,并发性更好,
    并且保障数据安全,防止单点数据库故障数据丢失
    
    
    MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,且有效的保护了服务器宕机的数据备份。

    5.mysql主从复制原理

    1.master主库的所有SQL变动操作都记录在一个binlog日志中(一个二进制文件)
    
    2.slave从库和master主库建立连接,就是从库开启一个线程去读取binlog日志中的sql变动
    
    3.如果从库检测slave检测到主库有SQL变动,就再开启一个线程将主库SQL的变动写入到自己本地的中继日志(relay.log)当中
    
    4.salve从库将自己的中继日志记录转化为SQL,自己在执行一遍,使从库与主库的数据一致

    6.mysql主从库配置流程如下

    mysql主从配置流程如下
    环境准备,准备2台服务器,安装好2个数据库
    192.168.226.128  是主库
    192.168.226.130  是从库
    
    
    主库配置
        编辑主库的/etc/my.cnf 写入如下配置
        
       [mysqld]
      server-id=1
      log-bin=s18mysql-bin  #s18mysql是日志的名字
    
        2.改了配置文件,重启数据库
         systemctl restart mariadb
         
        3.登录数据库,创建一个用于远程复制数据的账户
        create user 'yazhou'@'%' identified by 'yazhouhao';
    
        4.授予yazhou这个账号,从库的身份
        grant replication slave on *.* to 'yazhou'@'%';
    
            #立即刷新权限表
            flush privileges;
    
        5.锁住主库,防止数据写入,保证主从库数据一致,如果配置的时候没有人写入数据,可以不写 (可写可不写,如果写了,必须执行第9步进行解锁)
        flush table with read lock;
        
        6.登出数据库,导出当前所有的数据,发送给从库
        mysqldump -uroot -p --all-databases > /opt/all.sql  
    
        7.发送这个数据给从库
        scp  /opt/all.sql   root@192.168.226.130:/opt/  #192.168.22.130为从库ip
    
    
        8.登录主库数据库,查看主库的binlog状态
            show master status;
        
        9.进行解锁 
        unlock table;
    
    
        
    
    查看slave从库的配置如下:
        1.登录从库数据库,修改从库的配置文件/etc/my.cnf 
        在[mysqld]下写入如下配置
        server-id=10
      重启数据库  systemctl restart mariadb
        2.导入主库的数据库
        #导入数据的第一种方式
    登出数据库,然后 mysql
    -uroot -p < /opt/all.sql #导入数据的第二种方式 先登录从库mysql 然后 source /opt/all.sql; 3.此时主从数据库已经在同一个起始点了,开始数据同步
    这是一段sql语句,在从库mysql中执行的 change master to master_host
    ='192.168.226.128',#192.168.226.128主库的ip master_user='yazhou', #主库授权的用户 master_password='yazhouhao', master_log_file='s18mysql-bin.000001', #主库binlog状态信息里面的信息 master_log_pos=709; #主库binlog状态信息里面的信息 4.开启从库同步(在从库mysql中输入的命令) start slave ; 5.检测是否主从成功 , show slave statusG 检查这2个参数 Slave_IO_Running: Yes Slave_SQL_Running: Yes
    6.此时主从数据库配置完成,已经可以在主库写入数据,从库实时写入了,但是从库权限太大,不止能读主库数据,还能给从库数据库写入数据,所以需要配置读写分离(第7步) 7.配置mysql主从复制,读写分离 修改从库的/etc/my.cnf 添加只读参数
    在[mysqld]下面写入如下 read
    -only=true 8.在主库上创建一个普通用户,在从库上进行登录,查看是否可以读写数据库 create user "ywy"@"%" identified by "ywyacd"; 9.给这个普通用户查看数据库的权限 grant select on *.* to ywy@"%" ;
    刷新权限
  • 相关阅读:
    Async和Await的用法
    Idea有关收藏的博客
    记录看到的写的好的、实用的JavaScript博客
    Linux实用指令一
    flex布局
    移动端开发常用的vue组件
    npm --save 的含义
    切换npm源为淘宝镜像
    java String Map List 转换
    mysql查看被锁住的表
  • 原文地址:https://www.cnblogs.com/l1222514/p/11421695.html
Copyright © 2011-2022 走看看