Мы собираемся настроить репликацию MySQL Master-Slave в нашей производственной базе данных. Мы намерены запускать резервное копирование с ведомого устройства (в настоящий момент наш мастер отключается на 15 минут каждый день, пока выполняется резервное копирование, что переводит наш веб-сайт в автономный режим).
Как я могу оценить, насколько быстро будет расти журнал бункера? Какая еще информация потребуется?
Наш главный сервер базы данных MySQL в настоящее время имеет 4 диска SAS по 15 КБ в RAID 10.
Стоит ли мне подумать о добавлении отдельного массива RAID 1 (2 диска) для хранения журналов корзины? Я обеспокоен тем, что запись в журнал bin замедлит чтение и запись в основное хранилище данных mysql.
Есть два способа выяснить это
Предположим, двоичные журналы определены следующим образом:
[mysqld]
log-bin=mysql-bin
Заходим в ОС и делаем так:
cd /var/lib/mysql
ls -lt --time=access --time-style=+"%s" mysql-bin.* | awk '{print $7,$6}'
Это покажет вам двоичные журналы и их соответствующие временные метки UNIX.
Просто вычтите одну метку времени из предыдущей
ls -l mysql-bin.0*
-rw-rw---- 1 mysql mysql 1073754057 Mar 25 18:27 mysql-bin.000630
-rw-rw---- 1 mysql mysql 1074289363 Mar 25 22:16 mysql-bin.000631
-rw-rw---- 1 mysql mysql 1073746572 Mar 26 07:20 mysql-bin.000632
-rw-rw---- 1 mysql mysql 747478886 Mar 26 11:31 mysql-bin.000633
ls -l --time=access --time-style=+"%s" mysql-bin.* | awk '{print $7,$6}'
mysql-bin.000630 1364250429
mysql-bin.000631 1364264182
mysql-bin.000632 1364296842
mysql-bin.000633 1364311833
Что можно посчитать?
Вам нужно будет записать эти вычисления для каждого бинлога.
Если вы хотите проверить только двоичный журнал, вы можете сделать это:
mysqlbinlog mysql-bin.000632 > binlogsql.txt
T1=`head -20 binlogsql.txt | grep "SET TIMESTAMP" | head -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'`
T2=`tail -20 binlogsql.txt | grep "SET TIMESTAMP" | tail -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'`
(( TT = T2 - T1 ))
echo ${TT}
Посмотрите, что он делает:
[root@*** mysql]# mysqlbinlog mysql-bin.000632 > binlogsql.txt
[root@*** mysql]# T1=`head -20 binlogsql.txt | grep "SET TIMESTAMP" | head -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'`
[root@*** mysql]# T2=`tail -20 binlogsql.txt | grep "SET TIMESTAMP" | tail -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'`
[root@*** mysql]# (( TT = T2 - T1 ))
[root@*** mysql]# echo ${TT}
32660
[root@*** mysql]#
Вы можете рассчитать количество секунд, которое требуется каждому бинлогу для генерации, и отсчитать оттуда количество
Попробуйте !!!