• MySQL安装部署及调优


    MySQL安装

    二进制安装 - mysql-5.5.49

    mkdir /home/oldboy/tools -p
    cd /home/oldboy/tools/
    rz
    #mysql-5.5.49-linux2.6-x86_64.tar.gz
    tar -xf mysql-5.5.49-linux2.6-x86_64.tar.gz
    mv mysql-5.5.49-linux2.6-x86_64 /application/mysql-5.5.49
        useradd -s /sbin/nologin mysql -M
    ln -s /application/mysql-5.5.49/ /application/mysql
    cd /application/mysql
    /bin/cp support-files/my-small.cnf /etc/my.cnf
    chown -R mysql.mysql /application/mysql/
    /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
    cp support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld 
    sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld 
    /etc/init.d/mysqld start
    echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
    source /etc/profile
    mysqladmin -u root password '123456'
    lsof -i:3306
    

    MySQL基本操作

    shell界面下命令:

    启动:/etc/init.d/mysqld start

    停止:/etc/init.d/mysqld stop

    重启:/etc/init.d/mysqld restart

    登陆:mysql -u账号 -p密码

    设置密码:mysqladmin -u root password '新密码'

    mysql界面下命令:

    清理无用的MySQL用户及库

    select user,host from mysql.user
    drop user "root@::1";
    

    删除无用数据库

    drop database test;
    show database test;
    

    查看当前所有的数据库

    show databases;
    

    查看当前的登陆用户

    select user();
    

    MySQL优化

    mysql相关命令加入全局路径的配置

    方法一:
    echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
    source /etc/profile
    方法二:
    ln -s /application/mysql/bin/* /usr/local/sbin/
    

    多实例

    mkdir /data/{3306,3307}/data -p
    多实例配置文件模板 : ls -l support-files/my*.cnf
    编辑多实例配置文件 : vim /data/3306/my.cnf
    			        vim /data/3307my.cnf
    创建启动文件 : vim /data/3306/mysql
    			   vim /data/3307mysql
    

    启动多实例:

    mysqld_safe--defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
    mysqld_safe--defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &
    

    停止多实例:

    mysqladmin -u root -p密码 -S /data/3306/mysql.sock shutdown
    mysqladmin -u root -p密码 -S /data/3307/mysql.sock shutdown
    

    初始化mysql多实例数据库文件

    cd /application/mysql/scripts
    ./mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
    ./mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data --user=mysql
    

    启动登陆重启多实例多实例数据库

    启动

    /data/3306/mysql start
    /data/3307/mysql start
    

    停止

    /data/3306/mysql stop
    /data/3307/mysql stop
    

    重启

    /data/3306/mysql stop
    /data/3307/mysql stop
    

    开机自启动

    echo "#mysql multi instance" >>/etc/rc.local
    echo "/data/3306/mysql start" >>/etc/rc.local
    echo "/data/3307/mysql start" >>/etc/rc.local
    

    登陆多实例数据库

    mysql -S /data/3306/mysql.sock
    

    设置/修改多实例数据库密码

    mysqladmin -u root -S /data/3306/mysql.sock password '密码'
    mysql -uroot -p密码 -S /data/3306/mysql.sock
    
    实例的密码存放在/data/3306/mysql文件中,需修改权限为700,防止密码被其他用户看到
    find /data -type f -name "mysql" -exec chmod 700 {} ;
    修改实例密码:sed -i '13 s#旧密码#新密码#g' /data/3306/mysql /data/3307/mysql
    

    禁止使用pkill、kill -9、killall -9等命令强制杀死数据库,这会引起数据库无法启动等故障的发生

    MySQL主从复制

    MySQL的主从复制并不是数据库磁盘上的文件直接拷贝,而是Master上开启binlog记录功能,Slave从Master端获取binlog日志,然后再在Slave上以相同顺序执行获取的binlog日志中所记录的各种SQL记录。

    开启binlog

    [mysqld]
    log-bin = /data/3006/mysql-bin
    

    实战 主从同步 <3306为主,3307为从>

    开启Master的binlog功能

    vim /data/3306/my.cnf

    [mysqld]
    server-id = 1
    log-bin = /data/3006/mysql-bin
    

    /data/3306/mysql restart

    登陆数据库检查参数是否生效

    egrep "server-id|log-bin" /data/3306/my.cnf

    mysql -uroot -p'密码' -S /data/3306/mysql.sock

    show variables like 'server_id';
    show variables like 'log_bin';
    

    在主库上建立用于主从复制的账号

    mysql -uroot -p'密码' -S /data/3306/mysql.sock

    grant replication slave on *.* to 'rep'@'10.0.0.%' identified by '密码';
    flush privileges;
    

    检查创建的rep复制账号

    select user,host from mysql.user;
    select user,host from mysql.user where user='rep';
    MySQL权限说明:
    

    实现对主数据库锁表只读

    锁表只读,然后mysqldump出数据库,然后再解锁

    flush table with read lock;
    show variables like '%timeout%';
    

    显示信息记录在案

    show master status;
    或mysql -u root -p '密码' -S /data/3306/mysql.sock -e "show master status"
    

    锁表后,一定要新开ssh窗口,再导出数据库所有数据

    mkdir /server/backup -p
    mysqldump -uroot -p密码 -S /data/3306/mysql.sock --events -A -B|gzip >/server/backup/mysql_bak.$(date +%F).sql.gz
    

    从库编辑my.cnf文件,添加server-id(id号不能和主一样),注释掉binlog功能,重启从数据库

    将导出的数据库发送到从库上导入(可以用scp、rsyn)

    gzip -d mysql_bak.2017-01-01.sql.gz
    mysql -uroot -p'密码' -S /data/3307/mysql.sock < mysql_back.2017-01-01.sql
    

    从库连接主库配置信息

    mysql -uroot -p'密码' -S /data/3307/mysql.sock << EOF
    CHANGE MASTER TO
    MASTER_HOST='10.0.0.7'
    MASTER_PORT='3306'
    MASTER_USER='rep'
    MASTER_PASSWORD='密码'
    MASTER_LOG_FILE='mysql-bin.000008'
    MASTER_LOG_POS=342
    

    启动从库同步开关

    mysql -uroot -p密码 -S /data/3307/mysql.sock -e "start slave;"
    mysql -uroot -p密码 -S /data/3307/mysql.sock -e "show slave status;"
    

    测试

    主库上创建个账号
    mysql -uroot -p密码 -S /data/3306/mysql.sock -e "create database testtest;"
    从库上查看
    mysql -uroot -p密码 -S /data/3307/mysql.sock -e "show databases like 'testtest';"
  • 相关阅读:
    Sqlite && EF Code FIRST 终极解决方案 2019.5.17
    网卡 API 相关
    (依赖注入框架:Ninject ) 一 手写依赖注入
    Nlog 日志框架简单教程
    调试时候输出信息到输出窗口
    利用VS 性能探查器 解决代码性能不高问题
    Image 释放
    记一次数据丢失(电脑硬盘closed to down)的经历
    [极短]数字求和
    在博客园中使用pixijs
  • 原文地址:https://www.cnblogs.com/tcheng/p/8514134.html
Copyright © 2020-2023  润新知