linux环境下载mysql安装及主从复制

一、安装配置mysql

  • 1、新建文件、配置仓库源
编辑创建mariadb.repo仓库文件
vi /etc/yum.repos.d/MariaDB.repo
  • 2、添加repo仓库配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
  • 3、下载
    yum install MariaDB-server MariaDB-client -y

  • 4、启动
    systemctl start mariadb(通过yum下载的,可以使用systemctl管理)

  • 5、初始化
    mysql_secure_installation

    1.1mysql初始化.png

  • 6、登录
    mysql -uroot -p
    密码

  • 7、修改密码
    set password = PASSWORD('redhat123');

  • 8、创建普通用户,远程登录

创建用户
  create user '用户名'@'%' identified by '密码';
给新用户授权:
  grant all privileges on *.* to '用户名'@'%' identified by '密码';
刷新权限:
  flush privileges;
使用cdm终端登录验证:
  mysql -u用户名 -p -h 10.0.0.10      输入密码
  • 9、新用户没授权,会有权限限制
MariaDB [(none)]>证明没有使用数据库

use mysql;      Access denied for user 'xxx'@'%' to database 'mysql'
新建的普通用户没有权限,需要切换到root用户。

root用户下:
    use mysql;         
    Database change        
    MariaDB [mysql]>证明已使用mysql
查看创建的用户:
    select host,user,password from user where user='hui';
  • 10、权限
    对用户开通所有的权限:grant all privileges on *.* to username@'%';
    查看用户的权限:show grants for username@'%';
    移除权限(使用root用户):revoke all privileges on *.* from username@'%';

  • 11、设置编码 (mysql的配置文件,在Linux中是my.cnf在 windows中是my.ini)
    vim /etc/my.cnf写入配置:

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

修改完配置文件,需要重启mysql,使得生效
systemctl stop mariadb 
systemctl start mariadb 
查看编码相关信息:\s  (进去后执行)
  • 12、关闭防火墙
mysql远程登录授权配置:
    注意!关闭防火墙。、。。。。这样就不会再出莫名其妙的bug了。。。
    iptables -F  #清空防火墙规则
    #关闭防火墙 
    systemctl stop firewalld
    #永久关闭防火墙开机自启
    systemctl disable firewalld
  • 13、mysql的备份和恢复
创建数据库:create database s12;
备份:mysqldump -u root -p --all-databases > /tmp/db.dump
删除:drop database s12;
恢复(两种方式):
    1.登录数据库后:source /tmp/db.dump    
    2.在登录时候,进行数据写入:mysql -uroot -p < /tmp/db.dump
  • 14、查看端口号是否被占用
    lsof -i:3306
    netstat -tunlp|grep 3306

二、mysql主从复制

主从复制,就是为了数据库安全。‘主数据库’写入,‘从数据库’可以检测到并更新(两个不同的机器)。

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据

  • 1、master主库设置
1,要配置文件就得先停掉进程
   查看数据库状态:systemctl status mariadb
   停mariadb:systemctl stop mariadb
                    
2,修改配置文件
   server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin 
    vim /etc/my.cnf
            
    [mysqld]
    server-id=1
    log-bin=mysql-bin
            
    重启mariadb
    systemctl start mariadb
            
3,再装一个虚拟机模拟"从机器数据库"
    一样的root用户root1234(虚拟机的root用户和数据库的root用户不要搞混)
        
4,查看master的状态:show master status;         binary log文件的行数从313行开始
    File是二进制日志文件名,Position 是日志开始的位置。后面从库会用到 后面从库会用到 !!
        +------------------+----------+--------------+------------------+
        | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
        +------------------+----------+--------------+------------------+
        | mysql-bin.000001 |      313 |              |                  |
        +------------------+----------+--------------+------------------+
        
5,master主库添加从库账号
    1.新建用于主从同步的用户huige,允许登录的从库是'%'
        create user 'huige'@'%' identified by 'huige';
        1.1.题外话:如果提示密码太简单不复合策略加在前面加这句
            mysql> set global validate_password_policy=0;
            
    2,给从库账号授权,说明给huige从库复制的权限,在任何机器上复制
        grant replication slave on *.* to 'huige'@'%';          
            
    3,检查主库创建的账号信息
        select user,host from mysql.user;
            +---------+-----------+
            | user    | host      |
            +---------+-----------+
            | huige   | %         |
            | root    | 127.0.0.1 |
            | root    | ::1       |
            | root    | localhost |
            +---------+-----------+
            
    4,检查授权账号的权限
        show grants for huige@'%';
            
6,实现对主数据库锁表只读,防止数据写入,数据复制失败
   flush table with read lock;
   unlock tables;解锁;
        
7,锁表后,一定要单独再打开一个SSH窗口,导出数据库的所有数据,用于从数据库的写入
   [root@my ~ 19:32:45]#mysqldump -uroot -p  --all-databases > /tmp/all.dump
            
8,登录新建的从虚拟机,slave   进行网卡配置,重启网卡,等初始化
        
9,将主库的数据备份文件,scp到从库机器上,然后从库mysql导入数据
   scp /tmp/all.dump [email protected]:/opt/
            
10,副虚拟机安装mysql:
   yum install mariadb-server
   启动一下
   systemctl start mariadb
  • 2、slave从库设置
1,登录数据库,为保持数据一致性,导入数据
    source /opt/all.dump
            
2,配置从数据库的配置文件:
    vi /etc/my.cnf
            
    [mysqld]
    server-id=3
3,重启:systemctl restart mariadb
    
4,再次登录从库,就需要输入密码了,因为主库的密码都倒过来了
    mysql -uroot -p   (root用户)  密码:和主库密码一样

5,主库查看是否开启了二进制日志功能:
    show variables like 'log_bin';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_bin       | ON    |
    +---------------+-------+
    查看server_id
    show variables like 'server_id';
        
6, 查看一下主服务器的状态:
    show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000002 |      327 |              |                  |
    +------------------+----------+--------------+------------------+
    从机执行命令:
        change master to master_host='10.0.0.10',
        master_user='huige',
        master_password='huige',
        master_log_file='mysql-bin.000002',
        master_log_pos=327;

7, 启动从库的同步开关,测试主从复制的情况
        start slave;
  • 3、测试查看
1, 查看复制状态
        show slave status\G;
    这两个参数都是yes,代表主从同步成功:
        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
            
2, 在主服务器上show databases;    create databases s11111;
    在从服务器上show databases;    即可查看,也有此数据库。

你可能感兴趣的:(linux环境下载mysql安装及主从复制)