ubuntu14.04 mysql 安装到主从复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu14.04 mysql 安装到主从复制相关的知识,希望对你有一定的参考价值。

  1. 安装环境:
    Ubuntu Server 14.10
    mysql-5.6.23.tar.gz
    2. 安装必备的工具
    sudo apt-get install make bison g++ build-essential libncurses5-dev cmake
    3. 添加组合用户 设置安装目录权限
    sudo groupadd mysql
    sudo useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统
    sudo mkdir –p /usr/local/mysql #创建Mysql安装目录
    sudo mkdir -p /usr/local/mysql/data 
    sudo mkdir -p /usr/local/mysql/log
    sudo chown -R mysql:mysql /usr/local/mysql/data 
    sudo chown -R mysql:mysql /usr/local/mysql
    4. 编译安装mysql
    4.1 获取源码包
    cd /usr/local/src 
    wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
    4.2 解压mysql源码包
    sudo tar –zxvf mysql-5.6.23.tar.gz
    5. 编译配置
    cd mysql-5.6.23
    cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data -DMYSQL_USER=mysql -DWITH_DEBUG=0

    注意事项:
    重新编译时,需要清除旧的对象文件和缓存信息。
    # make clean
    # rm -f CMakeCache.txt
    # rm -rf /etc/my.cnf
    sudo make -j16 #-j数字 表示以多核心运行
    sudo make install
    6. 相关配置
    6.1 配置开机启动
    sudo chmod +w /usr/local/mysql
    sudo cp ./support-files/my-default.cnf /etc/my.cnf
    sudo cp ./support-files/mysql.server /etc/init.d/mysqld
    sudo chmod 755 /etc/init.d/mysqld
    6.2 常用命令软连接,设置环境变量
    ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
    添加/usr/local/mysql/bin 到PATH -->vim /etc/profile.d/mysql.sh
  2. export MYSQL_HOME=/data/mysql
  3. export PATH=$MYSQL_HOME/bin:$PATH

  4. 6.3 初始化数据库
    sudo /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
    7. 启动mysql服务试一试
    sudo /etc/init.d/mysqld start
    8. 启动成功后创建root用户的密码
    mysqladmin -u root password 或者这样 mysql_secure_installation---->mysqladmin -uroot -p
  5. 9. 成功后使用一下
    mysql -uroot -p
    注释:
    我把安装路径放在了/data/mysql/mysql,也就是默认的路径,data放在/usr/local/mysql/data/下,sock文件放到/usr/local/mysql/mysqld.sock
    一些参数如下:根据需要选择吧。
    CMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql 
     DEFAULT_CHARSET:指定服务器默认字符集,默认latin1 
     DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci 
     ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF 
     WITH_COMMENT:指定编译备注信息 
    WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。 
    WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎 
    SYSCONFDIR:初始化参数文件目录 
    MYSQL_DATADIR:数据文件目录 
    MYSQL_TCP_PORT:服务端口号,默认3306 
    MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock

 主从同步:

在从服务器上,执行如上步骤,修改配置文件:server-id=2

在主服务器上建立帐户并授权slave:

>GRANT REPLICATION SLAVE ON *.* to ‘mysync‘@‘%‘ identified by ‘q123456‘;

6、登录主服务器的mysql,查询master的状态
   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

7、配置从服务器Slave:
   mysql>change master to master_host=‘192.168.145.222‘,master_user=‘mysync‘,master_password=‘q123456‘,
         master_log_file=‘mysql-bin.000004‘,master_log_pos=308;   //注意不要断开,308数字前后无单引号。

   Mysql>start slave;    //启动从服务器复制功能

 

8、检查从服务器复制功能状态:

   mysql> show slave status\G

   *************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.2.222  //主服务器地址
              Master_User: mysync   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES
                    ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

 

MySQL同步故障:" Slave_SQL_Running:No" 两种解决办法

转载 2016年03月30日 13:41:12
 

进入slave服务器,运行:

mysql> show slave status\G

         .......
             Relay_Log_File: localhost-relay-bin.000535
              Relay_Log_Pos: 21795072
      Relay_Master_Log_File: localhost-bin.000094
           Slave_IO_Running: Yes
          Slave_SQL_Running: No
            Replicate_Do_DB: 
        Replicate_Ignore_DB: 
      ......

解决办法一、

Slave_SQL_Running: No
1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

一般是事务回滚造成的:
解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

 

解决办法二、

首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值

进入master

mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 |              |                  | 
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

 

然后到slave服务器上执行手动同步:

mysql> change master to 
> master_host=‘master_ip‘,
> master_user=‘user‘, 
> master_password=‘pwd‘, 
> master_port=3306, 
> master_log_file=localhost-bin.000094‘, 
> master_log_pos=33622483 ;
1 row in set (0.00 sec)
mysql> start slave ;
1 row in set (0.00 sec)

 

mysql> show slave status\G
*************************** 1. row ***************************
........
            Master_Log_File: localhost-bin.000094
        Read_Master_Log_Pos: 33768775
             Relay_Log_File: localhost-relay-bin.000537
              Relay_Log_Pos: 1094034
      Relay_Master_Log_File: localhost-bin.000094
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:

手动同步需要停止master的写操作! 

 

/data/mysql:mysql安装目录

/data/mysql/data:MySQL数据目录

/data/mysql/log:MySQL日志目录

/etc/:mysql配置文件目录

/tmp/:块目录

 









































































































































以上是关于ubuntu14.04 mysql 安装到主从复制的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下的mysql主从复制

Ubuntu 下构建mysql8.0 主从复制

Ubuntu配置Mysql主从数据库

无法在 Ubuntu 14.04 上安装 Mysql 5.6

Ubuntu 14.04 mysql5.6 数据库,数据文件存储路径修改

Ubuntu 14.04 mysql5.6 数据库,数据文件存储路径修改