MySQL集群主从配置开机自启

作为一名经验丰富的开发者,你可以教会新手如何实现MySQL集群主从配置开机自启。下面是整个流程的步骤表格:

步骤 动作
步骤一 安装MySQL
步骤二 配置主从数据库
步骤三 配置开机自启

接下来我将逐步介绍每个步骤需要做什么,并提供相应的代码和注释。

步骤一:安装MySQL

  1. 安装MySQL服务器和客户端

    sudo apt-get install mysql-server mysql-client
    
  2. 启动MySQL服务

    sudo service mysql start
    

步骤二:配置主从数据库

  1. 修改主数据库的配置文件(my.cnf)

    sudo nano /etc/mysql/my.cnf
    

    在文件中找到并修改以下配置:

    server-id = 1  # 设置主服务器的唯一ID
    log_bin = /var/log/mysql/mysql-bin.log  # 启用二进制日志(binlog)
    
  2. 重启MySQL服务

    sudo service mysql restart
    
  3. 创建用于主从复制的用户

    mysql -u root -p
    

    进入MySQL命令行后,执行以下SQL语句:

    CREATE USER 'repl'@'%' IDENTIFIED BY 'password';  # 创建一个可以复制的用户
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';  # 授权复制权限给用户
    FLUSH PRIVILEGES;  # 刷新权限
    
  4. 导出主数据库的数据并记录当前的binlog位置

    mysqldump -u root -p --opt --master-data=2 --single-transaction --flush-logs --hex-blob --routines --triggers --all-databases > dump.sql
    

    执行完后,打开dump.sql文件,找到类似CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;的信息,记录下来。

  5. 导入主数据库的数据到从数据库

    mysql -u root -p < dump.sql
    
  6. 修改从数据库的配置文件(my.cnf)

    sudo nano /etc/mysql/my.cnf
    

    在文件中找到并修改以下配置:

    server-id = 2  # 设置从服务器的唯一ID
    
  7. 重启从数据库

    sudo service mysql restart
    
  8. 在从数据库上执行复制命令

    mysql -u root -p
    

    进入MySQL命令行后,执行以下SQL语句,其中<MASTER_LOG_FILE><MASTER_LOG_POS>是第4步中记录的binlog位置:

    CHANGE MASTER TO MASTER_HOST='<主数据库的IP地址>', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='<MASTER_LOG_FILE>', MASTER_LOG_POS=<MASTER_LOG_POS>;
    START SLAVE;
    
  9. 检查从数据库的状态

    SHOW SLAVE STATUS\G
    

    确保Slave_IO_RunningSlave_SQL_Running的值都为Yes,表示从数据库已成功连接到主数据库并开始复制。

步骤三:配置开机自启

  1. 创建一个脚本文件(mysql_start.sh)

    sudo nano /usr/local/bin/mysql_start.sh
    

    在文件中写入以下内容:

    #!/bin/bash
    sudo service mysql start
    

    保存并退出。

  2. 授权脚本文件可执行权限

    sudo chmod +x /usr/local/bin/mysql_start.sh
    
  3. 创建一个systemd服务配置文件(mysql_start.service)

    sudo nano /etc/systemd/system/mysql_start.service
    

    在文件中写入以下内容:

    [Unit]
    Description=MySQL Start Service
    
    [Service]
    ExecStart=/usr/local/bin/mysql_start.sh
    
    [Install]
    WantedBy=multi-user.target
    

    保存并退出。

  4. 重新加载systemd配置

    sudo systemctl daemon-reload