mysql replication 整理

master 10.10.1.100

slave   10.10.1.110

安装mysql
tar xf mysql-5.5.3-m3.tar
./configure --prefix=/usr/local/mysql \
--localstatedir=/data/mysql --enable-assembler \
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static \
--with-pthread --enable-static --with-big-tables --without-ndb-debug \
--with-charset=utf8 --with-extra-charsets=all \
--without-debug --enable-thread-safe-client --enable-local-infile --with-plugins=max

-localstatedir=/data/mysql //库文件存放目录
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static//静态编译安装mysql 客户端和服务端
--with-pthread //采用线程
--with-big-tables //对大表的支持
--with-charset=utf8 //默认字符集为utf8
--with-extra-charsets=all //安装所有字符集
--without-debug //去掉debug 模式
--enable-thread-safe-client //以线程方式编译客户端
--with-plugins=max //添加对innodb 及partition 的支持
--enable-local-infile //对load data 的支持


创建mysql用户
id mysql

useradd -s /sbin/nologin mysql

安装数据库
/usr/local/mysql/bin/mysql_install_db --usre=mysql --datadir=/data/mysql

权限
chown -R root.mysql /usr/local/mysql/
chown -R mysql.mysql /data/mysql/

配置文件
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld 

vim /root/.bash_profile
source /root/.bash_profile

配置密码
/etc/init.d/mysqld start
mysqladmin -u root password zhang

/etc/init.d/mysql start

MySQL Replication 俗称MySQL AB 复制,主要是通过把主服务器上的二进制日志通过网络传到
从服务器上,MYSQL 会自己把二进制日志转换成相关的DDL,DML,DCL 等语句!

配置主机

授权,创建用户

mysql -uroot -p

grant replication slave,reload,super on *.* to 'slave'@'10.10.1.%' identified by '123456';
flush privileges;

修改配置文件
vim /etc/my.cnf

server-id=1 #1..设置server id
log-bin=mysql-binlog #打开二进制日志,最好放在不同的硬盘上,减小IO 消耗
expire_logs_day=10 #设置二进制日志保存日期
max_binlog_size=500M #设置每个binlog 文件的大小
 
/etc/init.d/mysqld restart

show master status;

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      106 |              |                  |
+------------------+----------+--------------+------------------+


锁表
 flush tables with read lock;
备份数据库
mysqldump -u root -pzhang --all-database > all.sql
scp all.sql mysql2:/opt/

unlock tables;

从机配置
mysql -uroot -pzhang <all.sqlll
导入数据

vim /etc/my.cnf

server-id=2 #配置多个从服务器时依次设置id 号
slave-skip-errors=all #mysql 复制可能出现主服务器上可以运行的语句,从服务器不能够运行,所
以我们在my.cnf 加一句slave-skip-errors=all 意思是忽略所有的sql 语句错误!
relay-log=mysql-relay-bin #该文件用于存放Slave 端的I/O 线程从Master 端读取的二进制文件信息
关闭binlog 主要考虑到我们使用Master 的binlog 进行增量备份,这里就不需要了。
#log-bin=mysql-bin
#binlog_format=mixed


flush slave;
CHANGE MASTER TO
-> MASTER_HOST='10.10.1.100',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='unixhot',
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=106;

change master to  master_host='192.168.1.100',master_user='admin',master_password='123456', master_log_file='binlog.000004',master_log_pos=106;

slave start;
show slave status;

show slave status\G;
其中
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
   表示OK了

MySQL错误1042-Can't get hostname for your address解决方法[原]
后来改了linux机器上安装的mysql的配置文件

/opt/lampp/etc

里面有个my.cnf

打开编辑,在
[mysqld]节点下新增或修改如下两行行
skip-name-resolve #忽略主机名的方式访问
lower_case_table_names=1 #忽略数据库表名大小写
重启mysql服务,问题得到解决。

你可能感兴趣的:(mysql,数据库,职场,Replication,休闲)