mysql 1对多复制_巧用mysqld_multi实现多主对一从的mysql复制

一、在两个主服务器上分别安装mysql。

useradd mysql

wget    http://122.225.32.131/icons/mysql-5.0.22.tar.gz

tar -zxvf mysql-5.0.22.tar.gz

cd      mysql-5.0.22

mkdir   /usr/local/mysql

./configure     \

--prefix=/usr/local/mysql       \

--without-debug \

--enable-thread-safe-client \

--enable-assembler \

--enable-profiling \

--with-mysqld-ldflags=-all-static \

--with-client-ldflags=-all-static \

--with-charset=latin1 \

--with-extra-charsets=all  \

--with-big-tables       \

--enable-largefile      \

make && make install

cp support-files/my-medium.cnf /etc/my.cnf

cd /usr/local/mysql/bin

./mysql_install_db --user=mysql

./mysqld_safe   --user=mysql    &

cp /root/mysql-5.0.22/support-files/mysql.server  /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig --level 345 mysqld on

sleep 3

mysql -uroot mysql -e "delete from user where user = '';"

mysql -uroot mysql -e "grant replication slave on *.* to 'repl'@'%'  identified by '123321';"

mysql -uroot mysql -e "grant shutdown on *.* to 'shutdown'@'%' identified by 'shutdown';"

//可以根据你的实际情况把%改为从服务器的IP,修改用户名和密码。

以上服务器是基本配置,如果要优化的情更具实际情况优化。

2、检查服务器配置文件,确认打开bing-log,并且配置serverid = 1

mysql

flush tables with read lock;

show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000014 |   386037 |              |                  |

+------------------+----------+--------------+------------------+

记录以上数值,然后通过dump,或者tar -zcvf 备份 数据库或者var目录。

unlock tables;

exit

scp 备份的var目录到从服务器上。

两个主服务器都这样操作。

3、搭建从服务器。

useradd mysql

wget    http://122.225.32.131/icons/mysql-5.0.22.tar.gz

tar -zxvf mysql-5.0.22.tar.gz

cd      mysql-5.0.22

mkdir   /usr/local/mysql

./configure     \

--prefix=/usr/local/mysql       \

--without-debug \

--enable-thread-safe-client \

--enable-assembler \

--enable-profiling \

--with-mysqld-ldflags=-all-static \

--with-client-ldflags=-all-static \

--with-charset=latin1 \

--with-extra-charsets=all  \

--with-big-tables       \

--enable-largefile      \

make && make install

cp support-files/my-medium.cnf /etc/my.cnf

修改/etc/my.cnf

在结果加上以下代码

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user = shutdown

password =  shutdown

log = /usr/local/mysql/etc/mysqld_multi.log

[mysqld1]

socket          = /tmp/mysql.sock1

port            = 3306

pid-file        = /usr/local/mysql/var1/localhost.pid

datadir         = /usr/local/mysql/var1

user            = mysql

server-id       = 2

[mysqld2]

socket          = /tmp/mysql.sock2

port            = 3307

pid-file        = /usr/local/mysql/var2/localhost.pid

datadir         = /usr/local/mysql/var2

user            = mysql

server-id       = 2

然后

mkdir /usr/local/mysql/etc

cp support-files/mysqld_multi.server  /usr/sbin/mysqld_multi.server

chmod 755 /usr/sbin/mysqld_multi.server

export PATH=$PATH:/usr/sbin/:/usr/local/mysql/bin

如果想下次启动还生效,请修改/etc/profile

把刚才备份过来的var分别放到/usr/local/mysql/下面命令为var1和var2

var1和var2和/usr/local/mysql/etc的权限必须是mysql可以写。

然后启动mysql_multi.server

mysqld_multi.server start

通过netstat -tulnp 检查端口是否启动。

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      23623/mysqld

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      23733/mysqld

通过

mysql -S /tmp/mysql.sock1   //登录第一个mysql实例

mysql -S /tmp/mysql.sock2    //登录第二个mysql实例

mysqld_multi.servr stop 1 //关闭第一个mysql实例

mysqld_multi.servr stop 1-2 //关闭第一和第二个mysql实例

mysqld_multi.servr stop   //关闭所有mysql实例。start同样。

下面就是分别登录到实例1和实例2后配置mysql复制的从服务器就可以了。

mysql -S /tmp/mysql.sock1

change master to

master_host='第一个主服务器ip',

master_user=‘repl’,

master_password='123321',

master_log_file='mysql-bin.000014‘, \\刚才show master的数据

master_log_pos=386037;

start slave;

show slave status \G;

Slave_IO_Running: Yes \\负责从主服务器读取binlog,如果为NO,应该是账号或者密码不对,不能连接到主服务器,或者是刚才的binlog号码或者pos号码有问题。请仔细检查

Slave_SQL_Running: Yes \\负责执行IO传输过来的binlog。

检查以上两项是否为yes,如果是就OK了。

另一个实例如法炮制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL 多实例是指在同一个服务器上同时运行多个 MySQL 服务器实例的技术。这样可以在同一台机器上同时管理多个数据库,每个实例都有自己的数据库和配置文件。这在某些情况下可以提高数据库性能和可用性,比如当你需要在不同的数据库之间进行负载均衡时。 ### 回答2: MySQL多实例是指在一台服务器上同时运行多个独立的MySQL数据库实例。通常情况下,一个服务器只能运行一个MySQL实例,也就是只能使用一个端口号和一个数据目录。而使用多实例技术可以在同一台服务器上启动多个MySQL实例,每个实例有自己独立的端口号和数据目录,彼此之间互相独立,互不影响。 使用多实例技术可以带来一些好处。首先,可以在同一台服务器上运行多个不同版本的MySQL,方便进行版本的升级和测试。其次,不同的实例可以用于不同的用途,如一个实例用于商业系统,一个实例用于数据分析,这样可以更好地管理和维护数据库。此外,多实例还可以提高服务器的利用率,节约硬件资源的开销。 实现多实例可以通过操作系统级别的配置,也可以通过MySQL自带的工具mysqld_multi实现。操作系统级别的配置需要手动创建多个配置文件、数据目录和日志文件,并在启动时指定不同的配置文件和数据目录。而mysqld_multi则可以通过简单的命令管理多个实例的启动、停止和重启,非常方便。 需要注意的是,多实例会增加服务器的负担和资源消耗,因此在配置多实例时需要考虑服务器硬件的配置和性能。另外,不同实例之间的资源和权限划分也需要谨慎规划,以确保数据的安全性和隔离性。 ### 回答3: MySQL多实例是指在一台物理服务器上同时运行多个独立的MySQL数据库实例。每个实例独立运行,并有自己的配置文件、数据目录和网络端口等。多实例可以对应用程序和数据库进行隔离,可以在同一台服务器上运行多个应用,使得资源利用更加高效。 MySQL多实例的好处有以下几点: 1. 资源利用率高:多实例可以在同一台服务器上运行多个独立的MySQL,充分利用服务器的资源,提高资源利用率。 2. 管理灵活性:每个实例都有独立的配置文件和数据目录,可以根据不同的应用需求进行灵活的配置和管理。 3. 数据隔离性好:多实例可以对不同的应用或者不同的用户进行数据隔离,避免不同实例之间的数据干扰。 4. 故障容错性高:每个实例都是独立运行的,一个实例出现问题不会影响其他实例的正常运行,提高了系统的容错性和稳定性。 5. 方便实施数据库复制:多实例可以方便地实施数据库复制,将数据从一个实例复制到另一个实例,提供数据备份和灾难恢复的能力。 总之,MySQL多实例是一种在一台物理服务器上运行多个独立的MySQL数据库实例的技术,能够充分利用服务器资源、提高数据库的管理灵活性、数据隔离性和故障容错性,是开发人员和系统管理员的重要工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值