Який правильний спосіб створити резервну копію бази даних геодезистів ESRI, що публікується на ArcGIS Server?


11

У мене є база даних geodata базу даних ESRI (v10), яка публікується в сервісі карток сервера arcgis. Коли служба працює, fGDB блокується. Чи потрібно зупинити сервіс, щоб отримати чисту резервну копію? Або є спосіб виконати резервне копіювання через архівний скрипт або через каталог? В даний час я використовую роботокопію Windows для передачі fGDB на резервний диск. Ось вихід із відображенням заблокованих файлів:

 New File           0 Bikepaths.CFP0026.4968.5140.sr.lock
 New File           0 BuildingFootprints.CFP0026.4968.5140.sr.lock

тощо, тощо ...

Відповіді:


4

Будь-який сервер повинен мати тіньовий диск. Ви можете використовувати "тіньовий диск", щоб ущільнити базу даних геоданих, що дозволить видалити файли .lock та повторно замовити файл найефективнішим чином. Потім ви можете створити резервну копію цього файлу. Ось гарна пара хороших вихідних точок:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/File_geodatabases_compressing_vs_compacting/003n0000007r000000/

Примітка: Shadow Drive має іншу назву дзеркального відображення на диску

http://en.wikipedia.org/wiki/Disk_mirroring


Ах, я завжди припускав, що ущільнення стосується геодезичних баз sde. Дякую!
mogollon22

Я керую декількома серверами, і жоден з них не має тіньових або дзеркальних дисків, хоча вони мають надлишкові диски (RAID5, Drobo) і можуть пережити вихід з ладу одного або декількох накопичувачів без втрати даних. Як би це заперечення не було, я копіюю файли fgdb xcopy(або xxcopy ), пропускаючи збої, а потім стискаю результат. Це не найкраще рішення, оскільки клас функцій, заблокований через сеанс редагування, може бути пошкоджений, але це не відрізняється від тіньового / дзеркального накопичувача.
matt wilkie

2

У нас є декілька виробничих веб-додатків із високим рівнем використання, які працюють на FGDB на бекенді. FGDB знищуються та відновлюються свіжими даними щоночі. У нас є додаток консолі .NET, про який я писав, і заснований на AGSSOM, який зупиняє послуги під час запуску процесу оновлення. Ознайомтеся з AGSSOM, це досить гладко. Ось деякі з C #, які я використовую, щоб створити резервну копію поточного FGDB, перш ніж знімати його:

// Only archive it FGDB already exists, if this is first run, then nothing to archive
            if (Directory.Exists(String.Concat(c.fgdbDir, @"\", kvp.Key[0], ".gdb")))
            {
                c.msg = String.Concat(Environment.NewLine, "Archiving data for ", kvp.Key[0], " - ",
                                      DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt"));
                Messaging.Log(c.msg, c.lw);
                // Create the FGDB folder in archive dir if not already there
                if (!Directory.Exists(String.Concat(c.fgdbArchiveDir, @"\", kvp.Key[0], ".gdb")))
                {
                    Directory.CreateDirectory(String.Concat(c.fgdbArchiveDir, @"\", kvp.Key[0], ".gdb"));
                    // Now copy from clips to archive
                    foreach (FileInfo fi in source.GetFiles())
                    {
                        fi.CopyTo(System.IO.Path.Combine(target.ToString(), fi.Name), true);
                    }
                }
            }

Він просто використовує Directory.CreateDirectory і FileInfo.CopyTo для копіювання FGDB - Windows бачить FGDB лише як іншу папку. Працює як чемпіон. Потім, після завершення процесу оновлення, ми знову запускаємо послуги за допомогою програми на основі AGSSOM.


Це було надзвичайно цінним!
mogollon22
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.