zoukankan      html  css  js  c++  java
  • 单机Ubuntu安装第二个Mysql服务

    第一个Mysql服务是按照官方的apt-get下载下来的,唯一改的就是配置文件
    安装第二个Mysql服务的原因是因为需要部署主从同步+读写分离

    一、安装配置第二个mysql服务

    参考链接

    1. 新建目录

      • 新建实例目录

        mkdir /usr/mysql/mysql_3307
        
      • 赋权

        chown -R mysql.mysql  /usr/mysql/mysql_3307
        
      • apparmor中配置对目录文件的访问权限

        # 编辑配置
        vim /etc/apparmor.d/usr.sbin.mysqld
        	/usr/mysql/mysql_3307/ r,
        	/usr/mysql/mysql_3307/** rwk,
        	
        /opt/mysql/mysql_3307/mysqld_3307.pid rw,
        /opt/mysql/mysql_3307/data/ r,
          /opt/mysql/mysql_3307/data/** rwk,
          /opt/mysql/mysql_3307/log/ r,
          /opt/mysql/mysql_3307/log/** rw,
        # 刷新培训
        service apparmor restart
        

    2. 复制多个MySQL配置文件

      mysql启动时会读取配置文件my.cnf,要配置多个实例需要复制多个my.cnf配置文件。

      在mysql5.7版本中/etc/mysql/目录下的my.cnf文件是个软链接,关联的是/etc/mysql/mysql.conf.d目录下的mysqld.cnf文件,配置信息全部在mysqld.cnf中,所以可以直接复制mysqld.cnf命名为mysqld_3307.cnf作为启动配置文件。

      ## 修改mysqld_3307.cnf配置 ##
      
      [mysqld_safe]
      socket          = /usr/mysql/mysql_3307/mysqld.sock
      # nice          = 0
      
      [mysqld]
      user            = mysql
      pid-file        = /usr/mysql/mysql_3307/mysqld.pid
      socket          = /usr/mysql/mysql_3307/mysqld.sock
      port            = 3307
      basedir         = /usr
      datadir         = /usr/mysql/mysql_3307
      tmpdir          = /tmp
      lc-messages-dir = /usr/share/mysql
      skip-external-locking
      
      bind-address            = 0.0.0.0
      
      log_error = /usr/mysql/mysql_3307/error.log
      

    3. 初始化Mysql文件

      # 5.7版本
      mysqld --initialize --user=mysql --basedir=/usr  --datadir=/usr/mysql/mysql_3307
      
      # 5.6版本会出现以下提示
      mysql_install_db --defaults-file=/etc/mysql/mysql.conf.d/mysqld_3307.cnf --basedir=/usr/ --datadir=/usr/mysql/mysql_3307 --user=mysql
      # 2111:29:05[WARNING]mysql_install_db is deprecated. Please consider switching to mysqld --initialize
      

    4. 修改密码

      • 启动实例

        先通过安全模式启动实例,跳过安全认证登录后修改root密码

      mysqld_safe --defaults-file=/etc/mysql/mysql.conf.d/mysqld_3307.cnf  &
      
      • 修改密码
      # 无密码登录
      mysql -S /usr/mysql/mysql_3307/mysqld.sock -P 3307
      # 修改密码
      update user set authentication_string=password('123456') where user='root';
      flush privileges;
      quit;
      
      • 关闭实例后再次启动实例
      # 关闭实例
      mysqladmin -u root -p -S /usr/mysql/mysql_3307/mysqld.sock shutdown
      

      异常:登录后执行命令的时候提示错误

      ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this start
      # 解决方案:设置密码
      set password="YOUR_PASSWORD";
      

      异常:使用无密码登录时,出现异常,链接

      ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
      # 在[mysqld]后添加skip-grant-tables(使用 set password for设置密码无效,且此后登录无需键入密码)
      skip-grant-tables
      
      

    二、主从同步配置

    1. 主库配置(/etc/mysql/mysql.conf.d/mysqld.cnf
    # 设置master的serverid
    server-id               = 1
    # 要生成的二进制日记文件名称
    log_bin                 = /var/log/mysql/mysql-bin.log
    # 要同步的数据库
    binlog_do_db            = marcosys
    
    

    1. 为主服务器注册新用户,用于从库链接
    grant replication slave on *.* to 'replication'@'%' identified by '123456';
    
    • 异常
    # 若出现异常:
    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
    # 方案
    flush privileges;
    

    1. 记录FilePosition的值
    show master status;
    

    1. 从库配置(/etc/mysql/mysql.conf.d/mysqld_3307.cnf
    server-id		= 2
    replicate-do-db=marcosys
    
    1. 从库设置
    # 设置主库信息
    change master to master_host='127.0.0.1',master_port=3306,master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=767;
    # 启动从机
    start slave;
    # 检查状态
    show slave statusG;
    # 状态标准
    lave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Master_Log_File: mysql-bin.000001
    Relay_Master_Log_File: mysql-bin.000001
    Read_Master_Log_Pos: 767
    Exec_master_log_pos: 767
    
  • 相关阅读:
    Redis
    Linux 软件安装
    Linux系统的目录和启动过程,Linux命令,权限控制
    虚拟机,Linux,VMware三种网络连接模式区别
    Spring Boot
    shiro和spring和springmvc的集成
    shiro
    Mybatis的逆向工程,MySQL8的数据库,8.0.11驱动的逆向工程的坑的解决方法
    jdk分析工具:jps和jstack
    如何使用jconsole(英文)
  • 原文地址:https://www.cnblogs.com/jiumo/p/13690827.html
Copyright © 2011-2022 走看看