首页 > 数据库技术 > 详细

mysql

时间:2019-08-07 23:08:53      阅读:115      评论:0      收藏:0      [点我收藏+]

tar压缩包安装

#查询mysql
rpm -qa|grep mysql
rpm -qa|grep -i mysql
#删除
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
find / -name mysql
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
#mysql安装
1.解压压缩包
    tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/software/
2.修改文件夹名字
    mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql
3.检查并创建用户和用户组
    cat /etc/group | grep mysql
    cat /etc/passwd |grep mysql
    groupadd mysql
    useradd -r -g mysql mysql
4.创建data文件夹
    mkdir data
5.授权目录和用户
    chown -R mysql:mysql mysql/
    chmod -R 755 mysql/
6.安装并初始化
执行下面命令之前去/etc/目录下查看是否有my.cnf配置文件,如果有,删除或者修改名字备份起来!不然会出现各种PID或者SOCK有关的问题
    /usr/local/software/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/software/mysql/data --basedir=/usr/local/software/mysql
7.复制启动脚本到资源目录
    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
8.增加mysqld服务控制脚本执行权限
    chmod +x /etc/rc.d/init.d/mysqld
9.将mysqld服务加入到系统服务
    chkconfig --add mysqld
10.检查mysqld服务是否已经生效
    chkconfig --list mysqld
11.在/etc 路径下面新增 my.cnf 文件
    vim /etc/my.cnf
    [mysqld]
    basedir=/usr/local/software/mysql
    datadir=/usr/local/software/mysql/data
    socket =/var/lib/mysqld/mysql.sock
    character-set-server=utf8mb4
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0                sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    log-error=/var/log/
    pid-file=/var/run/mysqld/mysqld.pid
    server-id=1
    log-bin=mysql-bin
    log-slave-updates=1
    default-storage-engine=INNODB
    innodb_large_prefix=on
    max_connections = 2000
    max_connect_errors=2000

    #skip-grant-tables
12.授权配置文件
chmod 644 /etc/my.cnf
13.新建路径
在步骤11里面配置了日志文件、pid文件、sock文件的路径,所以要去自己手动创建这些路径,文件不用创建,会自动生成
PID路径:/var/run/mysqld/
LOG路径:/var/log/
SOCK路径:/var/lib/mysqld/
14.授权
    chown -R mysql /var/lib/mysqld
    chgrp -R mysql /var/lib/mysqld
    chown -R mysql /var/run/mysqld
    chgrp -R mysql /var/run/mysqld
    chown -R mysql /var/log
    chgrp -R mysql /var/log
15.启动mysql
    service mysqld start
16.查看进程配置生效
    ps -ef | grep mysql
17.登录mysql
    mysql -uroot -p
    1.提示找不到mysql命令的话
    ln -s /usr/local/software/mysql/bin/mysql /usr/bin
    2.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' 
    ln -s /var/lib/mysqld/mysql.sock /tmp/
18.修改root密码
    flush privileges;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
    flush privileges;
19.配置3306端口
关闭防火墙:
    a. 永久性生效
    开启:chkconfig iptables on
    关闭:chkconfig iptables off
    b. 即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop
    c.查看防火墙状态
    service iptables status
如果防火墙打开则配置端口,否则就不用了配置了。打开/etc/sysconfig/iptables文件,找到22端口(这个是默认配置好的),复制多一行在下面,把22改成3306就行,记住,不要复制到最后一行
    service iptables restart
20.测试连接 navicat 
    1. 1130 - Host '192.168.114.1' is not allowed to connect to this MySQL server
    flush privileges;
    GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
    flush privileges;
    2. 1045 - Access denied for user 'root'@'192.168.114.1' (using password:YES)
    flush privileges;
    grant all privileges on *.* to 'root'@'%' identified by 'root';
    flush privileges;
    
备注:
如果以后mysql启动失败,
[root@pengyy63 ~]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
删除 /var/run/mysqld
rm -rf /var/run/mysqld
mkdir /var/run/mysqld
chown -R mysql /var/run/mysqld
chgrp -R mysql /var/run/mysqld,
如果还是不行,可以进入 /tmp  目录下 ,删除   mysql.sock  mysql.sock.lock
    
    

rpm安装

1.server安装
rpm -ivh mysql-community-server-5.7.26-1.el6.x86_64.rpm --force --nodeps
2.client安装
rpm -ivh mysql-community-client-5.7.26-1.el6.x86_64.rpm --force --nodeps
3.vim  my.cnf  输入任意密码登录mysql
[mysqld]
skip-grant-tables
4.登录mysql,修改密码
flush privileges;
set password for root@localhost = password('root');
flush privileges;
5.vim /etc/my.cnf  
[mysqld]
#skip-grant-tables
6.重启mysqld服务
service mysqld restart

一主多从

主从复制是指服务器分为主服务器和从服务器,主服务器负责读和写,从服务器只负责读,主从复制也叫master/slave,master是主,slave是从

主从复制原理:
1.当master主服务器上的数据发生改变时,则将其改变写入 二进制日志文件 中
2.slave从服务器会在一定时间间隔内对master主服务器上的二进制日志文件进行探测,探测其是否发生过改变
3.如果探测到master主服务器的二进制日志文件发生改变,则开始一个 IO Thread 请求master二进制事件
4.同时master 主服务器为每个 IO Thread 启动一个 dump Thread,用于向其发送二进制事件(事件即日志)
5.slave从服务器将接收到的二进制事件保存到自己本地的 中继日志(Realy log) 文件中
6.slave从服务器将启动 SQLThread 从中继日志文件 中读取二进制日志,在本地重放,使其数据和主服务器一致
7.最后 IO Thread 和 SQL Thread 将进入睡眠状态,等待下一次被唤醒
备注:主从数据库不能够实时同步,会产生毫秒级别的误差

master主服务器配置:
    log-bin=/var/lib/mysqld/binlog
    server-id=1
    binlog-do-db = pengyy
log-bin:同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
server-id:master端的ID号;
binlog-do-db:要同步的数据库名
还可以设置不同步的数据库:不同步mysql库和test库
binlog-ignore-db = mysql 
binlog-ignore-db = test

slave从服务器配置:
    server.id=2

1.配置主从服务器 重启mysqld  service mysqld restart
    192.168.31.45(master)
    vim /etc/my.cnf
        log-bin=/var/lib/mysqld/binlog
        server-id=45

    192.168.31.47(slave)
        server-id=47

    192.168.31.48(slave)
        server-id=48

    192.168.31.49(slave)
        server-id=49

2.设置主从关系
    2.1设置主服务器
        2.1.1在主服务器上创建有复制数据的账号并授权创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。
首先登陆mysql,然后创建一个用户名为 copy,密码为 123456 的账户,该账户可以被192.168.31网段下的所有ip地址使用,且该账户只能进行主从同步。
grant replication slave on *.* to 'copy'@'192.168.31.%' identified by '123456';
        2.1.2建议重置一下主服务器状态 reset master
可以先查看一下主服务器状态 show master status;    一般刚开始设置的是以  position 偏移量为 154      
重置主服务器状态  reset master;
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)
        2.1.3在主服务器上执行命令,获取主服务器二进制文件binlog文件名及坐标(二进制文件名和坐标值会在后面用到)
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      154 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
    2.2设置从服务器
        2.2.1重置从服务器的状态 reset slave;
可以先查看一下从服务器状态 show slave status; 正常情况下是 空状态,可以不重置
mysql> show slave status;
Empty set (0.00 sec)
--------------------------------------------------------
stop slave;
reset slave;
        2.2.3在从服务器上指定主服务器
CHANGE MASTER TO MASTER_HOST='192.168.31.45',MASTER_PORT=3306,MASTER_USER='copy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;
 
MASTER_HOST='192.168.31.45'     --主服务器ip
MASTER_PORT=3306                --主服务器端口
MASTER_USER='copy'              --主服务器上配置过用来数据同步的账号
MASTER_PASSWORD='123456',       --主服务器上配置过用来数据同步的账号的密码
MASTER_LOG_FILE='binlog.000001' --二进制文件
MASTER_LOG_POS=154              --偏移量
        2.2.4查看从服务器状态 show slave status \G;
        2.2.5在从服务器上执行开始复制命令  start slave;
    2.3主从验证
        2.3.1 show slave status \G;
            Slave_IO_Running: No
             Slave_SQL_Running: Yes
问题:在进行从服务器安装mysql时,直接将虚拟机克隆 ,导致  auto.cnf  中的 server-uuid 一致
所以修改 uuid
进入mysql select uuid();
mysql> select uuid();
+--------------------------------------+
| uuid()                               |
+--------------------------------------+
| ca8f7a58-77f9-11e9-a69c-0050562fa741 |
+--------------------------------------+
vim auto.cnf
[auto]
server-uuid=ca8f7a58-77f9-11e9-a69c-0050562fa741

重启 mysqld 服务  service mysqld restart
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes

双主双从

1.配置主从服务器 重启mysqld  service mysqld restart
    192.168.31.45(master)
    vim /etc/my.cnf
        log-bin=/var/lib/mysqld/binlog
        server-id=45

    192.168.31.46(master)
        log-bin=/var/lib/mysqld/binlog
        server-id=46

    192.168.31.47(slave)
        server-id=47

    192.168.31.48(slave)
        server-id=48

    192.168.31.49(slave)
        server-id=49

2.设置主从关系
    2.1设置主服务器
        2.1.1在主服务器上创建有复制数据的账号并授权创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。
首先登陆mysql,然后创建一个用户名为 copy,密码为 123456 的账户,该账户可以被192.168.31网段下的所有ip地址使用,且该账户只能进行主从同步。
grant replication slave on *.* to 'copy'@'192.168.31.%' identified by '123456';
grant replication slave on *.* to 'copy'@'%' identified by '123456';
        2.1.2在主服务器上编辑 my.cnf
        在(45)编辑 vim  my.cnf 增加以下四行
        auto_increment_increment = 2
         auto_increment_offset = 1
         log-slave-updates
         sync_binlog=1
        在(46)编辑 vim  my.cnf 增加以下四行
        auto_increment_increment = 2
         auto_increment_offset = 2
         log-slave-updates
        sync_binlog=1

    2.2设置服务器状态(45、46互为主从服务器,45为主,46则是45的从;46为主,45则为46的从)
        2.2.1登录45服务器,查看主服务器状态,有必要进行重置
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |      154 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      154 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
        2.2.2登录46服务器查看主状态
ysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |      599 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
mysql> reset master;
Query OK, 0 rows affected (0.01 sec)
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      154 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
        2.2.3设置主从
192.168.31.45(master)  ---->    192.168.31.47(slave)
192.168.31.46(master)  ---->    192.168.31.48(slave)
45 、46 互为主从 
===========================>>>>>>>>>>>>>>>>>>>>>>>>>>>>
192.168.31.45(master)  ----> 192.168.31.46(slave)   192.168.31.47(slave)  
  CHANGE MASTER TO MASTER_HOST='192.168.31.45',MASTER_PORT=3306,MASTER_USER='copy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;
 
192.168.31.46(master)  ----> 192.168.31.45(slave)   192.168.31.48(slave)  
  CHANGE MASTER TO MASTER_HOST='192.168.31.46',MASTER_PORT=3306,MASTER_USER='copy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;
        2.2.4开始复制
        start slave;
--------------------------------------------------------
    2.3主从验证
        2.3.1 show slave status \G;
            Slave_IO_Running:  Yes
             Slave_SQL_Running: Yes

mysql

原文:https://www.cnblogs.com/pengyy/p/11318235.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!