linux mysql 单机主从_linux小白 mysql单机主从同步简单配置

一、使用mysqld_multi新建mysql实例(注:本实例mysql安装在/usr/local下)

# vi my.cnf       #进入mysql配置文件添加以下四行

[mysqld_multi]

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

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

user=mysql

修改my.cnf配置文件,尾处添加以下几行:

[mysqld2]

replicate-do-db=class      #指定需要同步的数据库名(此例DB_NAME=class)

replicate-ignore-db=mysql      #不需要同步的数据库名

port=3307#从数据库端口号,也可以改为其他的,只要不占用系统中端口号就行

socket=/tmp/mysqld2.sock      #指明从数据库sock路径

pid-file=/tmp/mysql2.pid      #从数据库pid路径

datadir=/usr/local/mysql2/var      #从数据库目录路径

log=/usr/local/mysql2/mysql2.log      #从数据库日志路径

server-id=3

master-host=localhost                 #主的IP,单机么就直接localhost

master-user=root    #主数据库的用户名,一般我们一个数据库一个用户与密码,这边偷懒直接root了

master-password=123456      #主数据库用户名的密码,测试环境下简单粗暴root密码

如果(单机环境中)需要一主多从,则复制以上[mysqld2]这段,稍做修改就可以了。

--------------初始化第二个数据库------------------

mysql_install_db --datadir=/usr/local/mysql2/var --user=mysql

--------------启动mysql2--------------------------

mysqld_multi start 2

--------------使用socket登录实例------------------

mysql -uroot -S/tmp/mysql2.sock

--------------进入mysql设置root用户密码-----------

set password for 'root'@'localhost'=password('123456')

退出mysql后,重启mysql服务(注:一般维护重启数据库顺序,先停从mysql2,再直接重启主mysql,最后等主的起来后再把从mysql开启,这样就不太会引起主从报错。

mysqld_multi stop 2          #停

/etc/init.d/mysqld restart   #重启

mysqld_multi start 2     #启动

-------------主服务器宕机后主从报错---------------

假如主服务器宕机后或者服务停了,再次开启则mysql主从会报错,避免重新change master这个操作,维护时重启数据库顺序要记住,这是我认为的哈。

接下来我们解决报错方法:(一般为这个报错,如果主从上面status中mysql-bin.*****和pos值都一致的话,那就要找度娘了)

1.在主服务器上执行

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000004 |      308 |              |                  |

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

1 row in set (0.00 sec)

2.在从服务器上执行

mysql> change master to master_host='127.0.0.1',master_user='root',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=308;         #注:master_log_pos=308 中308没有引号,是裸的。

接下来开启从服务器的复制功能

Mysql> start slave;

最后我们在从mysql中执行

Mysql> show slave status \G

显示以下就说明简单mysql单机主从完成了

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

Slave_IO_State: Waiting for master to send event

Master_Host: localhost

Master_User: root

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 272

Relay_Log_File: mysql2-relay-bin.000003

Relay_Log_Pos: 235

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes          #这条和下面那条要同时为yes状态。

Slave_SQL_Running: Yes

Replicate_Do_DB: class        #这个就是我们前面指定同步的数据库名

Replicate_Ignore_DB: mysql  #这个是我们忽略,不需要同步的数据库名,一般都为mysql默认的那个数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值