Mysql主从备份镜像构建及上传

    xiaoxiao2022-07-13  147

    构建镜像过程

    1. Master镜像构建

    1. 下载并解压官网镜像文件

    # wget https://codeload.github.com/docker-library/mysql/zip/master # unzip master # mkdir /home/lipuan/mysqlDockerFile # cp -Rf mysql-master/5.7/Dockerfile /home/lipuan/mysqlDockerFile # cp -Rf mysql-master/5.7/docker-entrypoint.sh /home/lipuan/mysqlDockerFile # rm -rf mysql-master # chmod +x docker-entrypoint.sh

    2. Dockerfile中添加如下内容:

    RUN sed -i '/\[mysqld\]/a server-id=1\nlog-bin=mysql-bin\nlog-output=TABLE\nslow_query_log=1\ngeneral_log=1' /etc/mysql/mysql.conf.d/mysqld.cnf

    具体位置截图如下:

    ![1558603315289](D:\05work\12 中间件\mysql\创建Mysql镜像\md_image\1558603315289.png)

    3. docker-entrypoint.sh中添加

    echo "CREATE USER '$MYSQL_REPLICATION_USER'@'%' IDENTIFIED BY '$MYSQL_REPLICATION_PASSWORD' ;" | "${mysql[@]}" echo "GRANT REPLICATION SLAVE ON *.* TO '$MYSQL_REPLICATION_USER'@'%' IDENTIFIED BY '$MYSQL_REPLICATION_PASSWORD' ;" | "${mysql[@]}" echo 'FLUSH PRIVILEGES ;' | "${mysql[@]}"

    具体位置如图:

    ![1558603357512](D:\05work\12 中间件\mysql\创建Mysql镜像\md_image\1558603357512.png)

    到此位置Mysql Master镜像构建成功

    2. 构建Mysql Slave 镜像

    1. 下载官网镜像并解压

    # wget https://codeload.github.com/docker-library/mysql/zip/master # unzip master # mkdir /home/lipuan/mysqlDockerFile # cd ~ # cp -Rf mysql-master/5.7/Dockerfile /home/lipuan/mysqlDockerFile # cp -Rf mysql-master/5.7/docker-entrypoint.sh /home/lipuan/mysqlDockerFile # rm -rf mysql-master # chmod +x docker-entrypoint.sh

    2. Dockerfile中添加

    添加下面内容:

    RUN RAND="$(date +%s | rev | cut -c 1-2)$(echo ${RANDOM})" && sed -i '/\[mysqld\]/a server-id='$RAND'\nlog-bin=mysql-bin\nlog-output=TABLE\nslow_query_log=1\ngeneral_log=1' /etc/mysql/mysql.conf.d/mysqld.cnf

    此处server-id用的是随机数

    具体位置如下:

    ![1558603484307](D:\05work\12 中间件\mysql\创建Mysql镜像\md_image\1558603484307.png)

    3. docker-entrypoint.sh中添加

    添加内容如下 :

    echo "STOP SLAVE;" | "${mysql[@]}" echo "CHANGE MASTER TO master_host='$MYSQL_MASTER_SERVICE_HOST', master_user='$MYSQL_REPLICATION_USER', master_password='$MYSQL_REPLICATION_PASSWORD' ;" | "${mysql[@]}" echo "START SLAVE;" | "${mysql[@]}"

    具体位置:

    ![1558603615867](D:\05work\12 中间件\mysql\创建Mysql镜像\md_image\1558603615867.png)

    3. 构建和上传镜像

    3.1 构建Master镜像

    [root@bogon slave]# cd .. [root@bogon mysql5.7Dockerfile]# cd master/ [root@bogon master]# pwd /root/mysql_Dockerfile/mysql5.7Dockerfile/master [root@bogon master]# docker login https://harbor.ce.net [root@bogon master]# docker build -t harbor.net/mysqlagenttest/mysqlmaster:5.7 .

    3.2 构建Slave镜像

    [root@bogon slave]# cd .. [root@bogon mysql5.7Dockerfile]# cd slave/ [root@bogon slave]# pwd /root/mysql_Dockerfile/mysql5.7Dockerfile/master [root@bogon slave]# docker login https://harbor.net [root@bogon slave]# docker build -t harbor.net/mysqlagenttest/mysqlslave:5.7 .

    3.3 上传镜像

    [root@bogon master]# docker images [root@bogon master]# docker push harbor.net/mysqlagenttest/mysqlmaster:5.7
    最新回复(0)