redhat as 5.2下mysql5 master/slave复制配置过程详解

 

最近重新配置了mysql数据库复制,在这里做个记录吧!

服务器mysql服务器配置过程,两台服务器均为redhat as 5.2

 

mysql的安装过程:

 

 

 

 

 

1.确认两台服务器的MYSQL版本,mysql ?CV命令查看

注意: MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,所以最好采用相同的版本.如果达不到要求,必须要保证Master的版本不能高于Slave版本

 

2.在主服务器上为服务器设置一个连接账户。该账户必须授予REPLICATION SLAVE权限。

建立mysql库的时候已创建这个账户

mysql> GRANT ALL ON *.* TO repl@172.31.20.188  IDENTIFIED BY "*****";        添加用于同步的mysql账户

 

 

 

正常的步骤是:

假定你的域为mydomain.com,想要创建用户名为repl的一个账户,从服务器可以使用该账户从你的域内的任何主机使用密码slavepass来访问主服务器。要创建该 账户,可使用GRANT语句:

mysql> GRANT REPLICATION SLAVE ON *.*   

->TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

如果想要在Slave上有权限执行 "LOAD TABLE FROM MASTER" "LOAD DATA FROM MASTER" 语句的话,必须授予全局的 FILE SELECT 权限:

mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO  'repl'@'%.mydomain.com' IDENTIFIED BY 'rep';

 

3. 确保主服务器上my.cnf文件的[mysqld]部分包括一个log-bin选项。该部分还应有一个server-id=Master_id选项,其中master_id必须为1232?C1之间的一个正整数值。例如:

            [mysqld]

            log-bin=mysql-bin

            server-id=1

一般情况你打开my.cnf,已经默认是这样的设置了,里面内容看起来像下面这样:

# Replication Master Server (default)

# binary logging is required for replication

log-bin=mysql-bin

# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id       = 1

如果这些选项不存在,添加它们并且重启服务器.binary logging(二进制日志)没有启用的情况下,服务器是不能称为复制主服务器的

 

4.在主服务器上用mysqldump导出要同步的数据库,在从服务器上导入

#mysql -u root -p jstvedu < jstv04.sql

 

5.停止从服务器

#service mysqld stop

my.cnf文件中添加下面的行:

        [mysqld]

        server-id=slave_id

slave_id值同Master_id值一样,必须为1232?C1之间的一个正整数值。并且,从服务器的ID必须与主服务器的ID不相同。例如:

[mysqld]

server-id=2

 

 

6.启动从服务器。

#service mysqld start

 

 

7.在从服务器上执行下面的语句:

mysql> CHANGE MASTER TO  MASTER_HOST='172.31.20.187’;

//写主服务器的名称或者IP

    -> MASTER_USER='repl',         

 //写用来复制的帐号

    -> MASTER_PASSWORD='xxx',       

 //复制帐号的密码,这里就是指root的密码

    -> MASTER_LOG_FILE='mysql-bin.000001',         

 //之前记录的日志名

    -> MASTER_LOG_POS=947;           

 //之前记录的偏移量

 

Jstvedu2服务器运行的命令

mysql> CHANGE MASTER TO MASTER_HOST='172.31.20.187',  MASTER_USER='repl', MASTER_PASSWORD='jstv2009', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=18106800 ;

 

返回:

Query OK, 0 rows affected (0.01 sec)

下面的表显示了字符串选项的最大长度:

Master_Host60

Master_USER16

Master_PASSWORD32

Master_Log_File255

 

 

8.启动从服务器线程:

   mysql> START SLAVE

执行这些程序后,从服务器应连接主服务器,并补充自从快照以来发生的任何更新。

 

测试:

在从服务器上查看

mysql> SHOW SLAVE STATUS/G

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

             Slave_IO_State: Waiting for master to send event

                Master_Host: 172.31.20.187

                Master_User: repl

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: mysql-bin.000002

        Read_Master_Log_Pos: 400061

             Relay_Log_File: mysqld-relay-bin.000017

              Relay_Log_Pos: 28856

      Relay_Master_Log_File: mysql-bin.000002

           Slave_IO_Running: Yes

          Slave_SQL_Running: No

            Replicate_Do_DB:

        Replicate_Ignore_DB:

         Replicate_Do_Table:

     Replicate_Ignore_Table:

    Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

                 Last_Errno: 1062

                 Last_Error: Error 'Duplicate entry '17528' for key 1' on query. Default database: 'jstvedu'. Query: 'INSERT INTO mdl_log (time, userid, course, ip, module, cmid, action, url, info)

        VALUES ('1238637224', '28', '1', '172.26.31.45', 'user', '0', 'login', 'view.php?id=0&course=1', '28')'

               Skip_Counter: 0

        Exec_Master_Log_Pos: 348186

            Relay_Log_Space: 80731

            Until_Condition: None

             Until_Log_File:

              Until_Log_Pos: 0

         Master_SSL_Allowed: No

         Master_SSL_CA_File:

         Master_SSL_CA_Path:

            Master_SSL_Cert:

          Master_SSL_Cipher:

             Master_SSL_Key:

      Seconds_Behind_Maste

 

红色标示显示出从服务器的两个线程已经启动.

 

在从服务器上可以查看线程运行状态

mysql> SHOW PROCESSLIST/G

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

     Id: 3

   User: root

   Host: localhost

     db: test

Command: Query

   Time: 0

  State: NULL

   Info: SHOW PROCESSLIST

*************************** 2. row ***************************

     Id: 18

   User: system user

   Host:

     db: NULL

Command: Connect

   Time: 43

  State: Waiting for master to send event

   Info: NULL

*************************** 3. row ***************************

     Id: 19

   User: system user

   Host:

     db: NULL

Command: Connect

   Time: 4294966771

  State: Has read all relay log; waiting for the slave I/O thread to update it

   Info: NULL

3 rows in set (0.00 sec)

 

在主服务器上做一个update的语句,从服务器立刻就会同步更新.配置完成.

 

 

使用redhat as 5自带的mysql  5.0.45,需要做以下工作

1) 更换配置文件 

#cp /usr/share/doc/mysql-server-5.0.45/my-huge.cnf  /etc/my.cnf

使用mysql huge的配置,支持大的访问量

2) 重启mysql,导入备份文件,修改root密码

#service mysqld restart                    重新启动mysql

#mysql -u root -p jstvedu < jstv04.sql  导入jstvedu数据库备份文件

# mysqladmin -uroot -p password ****修改mysql root密码

 

3)设置服务器重启时mysql自动启动

chkconfig --level 345 mysqld on

4) 安装 mysql-devel-5.0.45-7.el5.i386.rpm包,php5.2编译时要用到的,否则php5.2无法编译成功

 

#cd /root/php

#rpm -ivh  mysql-devel-5.0.45-7.el5.i386.rpm

 

5) 添加mysql用户

#mysql -uroot -p

输入密码

mysql> GRANT ALL ON *.* TO repl@172.31.20.188  IDENTIFIED BY "*****";        添加用于同步的mysql账户

mysql> GRANT ALL ON jstvedu.* TO jstv@172.31.20.188  IDENTIFIED BY "*****";   备份服务器访问数据库的账户

mysql> GRANT ALL ON jstvedu.* TO jstv@localhost  IDENTIFIED BY "*****";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

offbye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值