当前位置:Gxlcms > 数据库问题 > mysql-主从复制

mysql-主从复制

时间:2021-07-01 10:21:17 帮助过:18人阅读

nxznxz@% identified WITH mysql_native_password by Pass1234!; grant replication slave on *.* to nxznxz@%;

4)注意需要开放端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

firewall-cmd --list-ports

 

4、 配置从服务器

1) 在/etc/my.cnf中修改以下内容

[root@centos3 ~]# vim /etc/my.cnf

server-id       = 22                                                //不能与其他实例重复

log-bin=master-bin                                                        //二进制日志文件名 修改

relay-log=relay-log-bin                                        //复制过来的二进制文件名,增加

relay-log-index=slave-relay-bin.index                //中继日志存放的文件名称,增加

技术图片

 

注意server-id不能与主服务器相同,但是从服务器要相同。

2) 重启mysql服务

技术图片

3) 登录mysql,配置同步(按照主服务器结果更改下面命令中

master_file和master_log_pos参数)

change master to master_host=192.168.1.131,master_user=root, master_password=Pass1234!,master_log_file=master-bin.000001,master_log_pos=467;

技术图片

4)启动同步

技术图片

 

5) 查看slave状态,确保以下两个值为YES

技术图片

5、 验证主从复制效果

1) 在主服务器上新建数据库“IT”

技术图片

2) 在从服务器上查看数据库,如果和主服务器相同,说明主从复制成功。

技术图片

 

 

从库多线程复制:

  https://blog.csdn.net/punk_lover/article/details/78424896

  https://blog.csdn.net/demonson/article/details/80774899

 

附一个一键安装mysql8.0的脚本:

#!/bin/bash
############   一键安装 MySQL 8.0 脚本  ############
# Updates:可以在安装的时候更改root初始密码        #
#######################  END  ######################

function install(){
    #先把多余的卸载了
    unload
    cd ~
    U_mysqlUrl=https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    #下载MySQL8.0的rpm包
    if [ -e "./mysql80-community-release-el7-1.noarch.rpm" ]
    then
        echo -e "\033[1;32m正在解压~~~\033[0m"
    else
        wget ${U_mysqlUrl}
        if [ $? -ne 0 ]
            then
            echo -e "\033[1;31m下载 MySQL 安装包失败,请检查您的网络!\033[0m"
            exit
        fi
    fi

    #解压rpm包 ##*/  表示删除最后一个/ 及其左边的字符
    rpm -Uvh ${U_mysqlUrl##*/}

    #安装MySQL8.0
    yum install mysql-server -y

    #启动MySQL
    echo -e "                  ************  \033[1;33m正在启动 MySQL\033[0m  *****************"
    systemctl start mysqld.service

    #查看状态
    a=$(systemctl status mysqld.service | grep Active)
    b=${a##*active}
    c=${b%% since*}
    d="(running)"
    if [ "$c" = "$d" ]
    then
        echo -e "             **************  \033[1;32mMySQL 启动成功\033[0m ******************"
    fi

    #找出初始密码,建立登录脚本
    findpass=$(grep temporary password /var/log/mysqld.log)
    initpass=${findpass##* }
    rm -rf ~/.my.cnf
    touch ~/.my.cnf
    echo "[client]" > ~/.my.cnf
    echo "user=root" >> ~/.my.cnf
    echo "password=\"${initpass}\"" >> ~/.my.cnf
    #设置此登录文件只有所有者可以读写
    chmod 770 ~/.my.cnf

    #修改密码
    chose_pass
}

#修改密码
function chose_pass() {
    declare -i settime=0
    while [ ${settime} -lt 3 ]
    do
        read -p "是否现在修改 MySQL 的 root 密码?[y/n] " chose
        if [[ "$chose" = "n" || "$chose" = "N" ]]
        then
            notchk_pass
            exit
        elif [[ "$chose" = "y" || "$chose" = "Y" ]]
        then
            modify_pass
            ((settime+=3))
            exit
        else
            echo -e "\033[1;33m请输入 y 或 n\033[0m"
        fi
        settime=$((++settime))            
    done
}
#不修改密码提示函数
function notchk_pass() {
    echo -e "\033[1;34;40mMySQL安装成功!!"
    echo "###############  请在输入命令 mysql 后进入数据库  ######################"
    echo "## 输入语句:ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘新密码‘;     #"
    echo "## 并在 ~/.my.cnf 文件中更新你的密码,以方便日后免密登录               #"
    echo "########################################################################"
    echo -e "\033[0m"
}

#修改密码操作函数
function modify_pass() {
    #如果密码格式不符合3次则退出
    declare -i chktime=0
    while [ ${chktime} -lt 3 ]
    do
        echo -e "\033[1;32m请输入您的新密码"
        read -p "至少一个大写字母、一个小写字符、数字和符号:" NEWPASS
        echo -e "\033[0m"    
                
        SQL="ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY \"${NEWPASS}\";flush privileges;"
        mysql --connect-expired-password -e "${SQL}"
        if [ $? -eq 0 ]
        then
            #修改登录脚本
            rm -rf ~/.my.cnf
            touch ~/.my.cnf
            echo "[client]" > ~/.my.cnf
            echo "user=root" >> ~/.my.cnf
            echo "password=\"${NEWPASS}\"" >> ~/.my.cnf
            chmod 0600 ~/.my.cnf
            
            echo -e "\033[1;34;40mMySQL安装成功!!"
            echo "###############  请在输入命令 mysql 后进入数据库  ######################"
            echo "## 自动登录脚本:~/.my.cnf                                             #"
            echo "########################################################################"
            echo -e "\033[0m"
            rm -rf transfer.txt
            #设置对了直接退出
            ((chktime+=4))
            exit
        fi
        chktime=$((++chktime))
        #第三次的时候提示并退出
        if [ ${chktime} -eq 3 ]
        then
            echo -e "\033[1;31m密码修改失败,请自行修改密码\033[0m"
            exit
        fi
    done
}

#卸载
function unload() {
    #停掉 MySQL 数据库
    systemctl stop mysqld.service
    #卸载各项服务
    yum remove mysql mysql-server mysql-libs compat-mysql51 -y
    #删除各个目录
    rm -rf /var/lib/mysql
    rm -rf /etc/my.cnf
    rm -rf /usr/share/mysql-8.0/
    touch list.txt
    #查一下继续卸载
    rpm -qa | grep mysql > list.txt
    for a in `cat list.txt`
    do
        yum remove $a -y
    done
    rm -rf list.txt
    #删除自动登录配置文件
    rm -rf ~/.my.cnf
    #删除日志文件
    rm -rf /var/log/mysqld.log
    #删除安装包
    #rm -rf ~/mysql80-community-release-el7-1.noarch.rpm
}

clear

echo -e "\033[1;36m############  欢迎使用一键安装 MySQL 8.0 脚本  ############\033[0m"
echo -e "\033[1;36m#                                                         #\033[0m"
echo -e "\033[1;36m#                    请保持网络畅通···                    #\033[0m"
echo -e "\033[1;36m#                                                         #\033[0m"
echo -e "\033[1;36m#                    1、安装 MySQL                        #\033[0m"
echo -e "\033[1;36m#                    2、卸载 MySQL                        #\033[0m"
echo -e "\033[1;36m#                    3、退出                              #\033[0m"
echo -e "\033[1;36m#                                                         #\033[0m"
echo -e "\033[1;36m###########################################################\033[0m"

declare -i style
read -p "请输入选项 [ 1 | 2 | 3 ]:" style

case "$style" in
1)
    #检查目录是否存在
    if [ -e "/var/lib/mysql80" ]
    then
        echo -e "\033[1;33m您的系统已安装 MySQL 数据库,请检查目录\033[0m"
    else
    install
    fi
    ;;
2)
    unload
    ;;
3)
    exit
    ;;
*)
    echo -e "\033[5;32;40m参数错误!!!\033[0m"
    ;;
esac

 

 

原博客:https://www.w3cschool.cn/timlc/timlc-u3xg24y8.html

mysql-主从复制

标签:dex   参数错误   ||   sdn   启动   temporary   ip地址   mysql 启动   slave   

人气教程排行